SQL Table 导致 运行 查询变慢

SQL Table causes slow running Queries

我有一个 sql table,它有大约 6,000 条记录,每条记录有 17 列。如果我对 table 进行基本搜索(即 Select * 来自 table_Orders)... return 所有记录需要 1.5 分钟!我 运行 使用此 table 的任何查询也非常慢。我已经重新索引 table 所以碎片不是问题。此 table 中有 2 个 nvarchar(max) 列用于存储 xml 数据。返回没有这些列的 table 非常快(不到 1 秒)。所以,我猜是 xml 数据阻碍了查询。我可以做些什么来加快使用 xml 列的查询的性能吗?任何见解将不胜感激。我通常不会在 sql 内使用 xml,所以我什至不知道从哪里开始。

我不会将该数据存储在 table 中。如果我这样做,我不会存储在 VARCHAR 中。不要听起来像个混蛋。

SQL 服务器有一个 xml 数据类型:http://msdn.microsoft.com/en-us/library/hh403385.aspx 它说有限制。您应该看到什么适用于您的场景。

如果您需要保留 XML - 将其粘贴到其他地方并从中提取您需要搜索的任何字段。

这听起来像是网络速度而不是搜索时间。即使 table 扫描 6000 行也只需要几分之一秒 - 搜索所有行。不过,将这些行返回给客户端……您正在下载所有数据,因此当您检索大量数据时,您会看到不同之处。这与 "query performance" 无关,除非您可以提高网络速度或传输更少数据,否则您无能为力。

您可以通过在聚簇索引中搜索键来发出查询来测试这一点。假设您在 RowID 上有一个聚集索引...

select RowId, NonXmlColumn where RowId = 3 -- or some other reasonable key
select RowId, XmlColumn where RowId = 3

这些查询的搜索时间将相同。因此,任何速度差异都可以归因于网络。