2010-10-23 145 views
0

我有这样奇怪的SQL Server查询速度慢

SELECT TOP 10 
     * 
    FROM NEWS 
    WHERE newsid > AAA 
ORDER BY newsid desc; 

这个查询的查询是AAA

的一些值,例如它是快速1,000,000和1,400,000很慢,但它是缓慢的1355316

我很困惑!!!

+2

您可以发布查询的执行计划为1,400,000而查询计划为1,355,316吗? – InSane 2010-10-23 18:23:15

+0

发布'NEWS'表的CREATE TABLE语句。发布的查询是否不包含单引号中的“AAA”,是否是一个错字? – 2010-10-23 18:30:56

回答

1

我的第一个想法是,它正在进行大量的字符串比较,也可能在您的情况下有1,355,316条记录,要么字符串值很长,要么表被分段。

桌子上有索引吗?

要开始阅读有关查询优化的内容,请阅读thisthis

+0

1,300,000和1,400,000或1,000,000之间有什么区别。 – ehsan 2010-10-23 18:26:16

+0

查询在没有索引的情况下执行得更快! – ehsan 2010-10-23 18:26:53

+0

这就是为什么我认为桌子可能是零散的。也许你可以发布执行计划,并告诉我们 - 表上的所有索引(包括主键)是什么。 – 2010-10-23 18:27:16

0

如果在Sql Server 2008中尝试使用FORCESEEK提示。你会得到可预见的结果。