【发布时间】:2015-01-12 19:18:18
【问题描述】:
我有一个 sql 表,它有大约 6,000 条记录,每条记录 17 列。如果我对表进行基本搜索(即从 table_Orders 中选择 *)...返回所有记录需要 1.5 分钟!我使用这个表运行的任何查询也很慢。我已重新索引表,因此碎片不是问题。该表中有 2 个 nvarchar(max) 列,用于存储 xml 数据。返回没有这些列的表非常快(不到 1 秒)。所以,我猜这是阻碍查询的xml数据。我能做些什么来加快使用带有 xml 的列的查询的性能吗?任何见解将不胜感激。我通常不使用 sql 中的 xml,所以我什至不知道从哪里开始。
【问题讨论】:
-
问题只是列的大小。您可以从中提取信息(甚至使用索引)。或者,根本不退货。
-
由于
(MAX)数据类型可以存储多达 2GB 的数据,并且您显然在这些列中存储了相当数量的数据,因此这些列的性能不佳,我会简单地将它们放在单独的表中(使用外键)。您不能索引(最大)数据类型,因此不要通过添加不必要的索引来浪费您的资源。 -
如果这是 XML 数据,我很想知道为什么这些列是
nvarchar。 XML 是 ascii 的一个子集——没有理由使用除 UTF-8 之外的任何东西。您可能应该将它们更改为varchar(max) -
你在这张表上有什么样的聚集索引(如果有的话)?
-
注意:设计更改不是这个问题的答案。
标签: sql sql-server xml performance