簡體   English   中英

SQL Server中的XML數據列

[英]XML Data Column in SQL Server

使用SQL Server 2008 R2

我想用以下各列創建一個表

[id] INT IDENTITY(1,1) NOT NULL,
[user_id] INT NOT NULL,
[date] DATE NOT NULL,
[timestamp] DATETIME NOT NULL,
[xml_data] XML NOT NULL

在標識列上具有主鍵,在user_id上具有非聚集索引,並且日期涵蓋xml_data和時間戳。

但是,我注意到我無法將xml_data添加到索引中的INCLUDE語句中。 悲傷的表情,因為當用戶搜索user_id和date時,這將導致RID查找。

存儲要查詢的xml數據的最佳方法是什么?

我認為我的選擇是

  1. 堅持使用xml並擁有格式正確的數據,但要查詢命中
  2. 使用具有未知優缺點的VARCHAR(MAX)
  3. 使用具有未知優缺點的VARBINARY(MAX)

注意:我懷疑是否可以將字符串的長度限制為甚至8000。

如果您有XML-將其存儲為XML ,原因有兩個:

  • 它針對XML存儲進行了優化-它不僅存儲為純文本,而且實際上是標記化的,比純文本更有效地存儲

  • 當將XML存儲為XML類型時,您實際上可以查詢 XML

但是:您不能僅像這樣索引XML列。 SQL Server中的任何索引最大長度為900字節-XML列的大小最大為2 GB。

如果要對XML列建立索引,請查看SQL Server 2005中的XML索引 -它是一種單獨的索引類型,旨在非常高效地處理對XML的查詢。

加快XML查詢速度的另一種方法是,通過存儲函數從XML中提取信息並將其存儲為父表,從而將您經常查詢的XML某些部分“浮現”到父表上。計算父表上的持久化列。 一旦將其存儲在此處,您就可以像查詢其他任何列一樣對其進行查詢,也可以對其進行索引! 但是,它僅適用於條信息(例如,訂單中的OrderNumber您只能擁有其中之一)-不能將其應用於數據集合。

您可以使用XQuery查詢xml字段。 這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM