我在 SQL Server 2016 中使用 XML 数据类型列时遇到了性能问题。看起来我的查询一遍又一遍地遍历 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 个“加载项”。我使用这篇文章添加了 2 个索引
- 我创建视图以将 xml 作为表格数据检索,并且我尝试了 .query() 和 .nodes/.value 方法。
对总共 3300 条记录的简单查询的性能非常糟糕;仅查询 transaction/prop1 和 prop2 部分需要 45 秒...