我有一个名为[cwbOrder]的表,目前有1.277.469行。我正在使用SQL Server 2014,我正在UAT环境中进行这些测试,在生产时这个查询需要更长的时间。
如果我尝试选择所有行,请使用:
SELECT * FROM cwbOrder
从表中检索所有数据需要24秒。我已经读过关于如何对谓词(WHERE)中使用的列进行索引很重要,但我仍然无法理解简单选择如何花费24秒。
在其他更复杂的查询中使用此表会为查询生成大量额外工作量,尽管我已在索引列上创建了JOIN。此外,我从该表中仅选择了2列然后将其加入另一个表,此操作仍然需要相当长的时间。作为示例,请考虑以下查询:
下面我附上了两个表的索引结构,以说明问题:
PK_cwbOrder是cwbOrder表中id_cwbOrder列的索引。
编辑1:我添加了查询的执行计划,其中我将cwbOrder表与cwbAction表一起加入。
考虑到上面的信息,有什么方法可以让我的查询更快?
答案 0 :(得分:0)
这种select
可能很慢的原因有很多:
您可以测试不同方面。例如:
SELECT TOP 10 <one column here>
FROM cwbOrder o
这会返回一个非常小的结果集,只读取表的一小部分。这会读取整个表但返回一个小结果集:
SELECT COUNT(*)
FROM cwbOrder o