1

我在 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 秒...

4

1 回答 1

0

似乎我的查询在没有索引的情况下执行得更好。我删除了它们,而不是 45 秒,它下降到 2 秒......

于 2017-08-30T11:18:32.043 回答