我使用SQL Server 2016中的XML DataType列遇到性能问题。看起来我的查询正在一遍又一遍地通过XML循环。这是我的设置:
- 使用ID int列(primarykey)和XML列创建一个表格
CREATE TABLE [dbo].[MYTABLE]([ID] [int] IDENTITY(1,1) NOT NULL,[XMLDATA] [xml] NULL,CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-
导入大约3,000个XML文件(〜200KB),看起来与此相似:
<root> <item> <transaction> <prop1></prop1> <prop2></prop2> </transaction> <load> <loaditem> <loadprop1></loadprop1> <loadprop2> <loadsubprop1></loadsubprop1> </loadprop2> </loaditem> </load> </item> </root>
可以有400至500" loaditems"。 -
我使用本文添加了2个索引
- 我创建视图以检索XML作为表格数据,并且我尝试了.query()和.nodes/.Value方法。
在总共3300个记录上进行简单查询的性能令人恐惧;仅查询交易/prop1和prop2零件需要45秒...
似乎没有索引,我的查询表现更好。我删除了它们,而不是45秒钟,它降低到2秒...