优化简单SQL SELECT

时间:2012-09-20 17:02:03

标签: sql sql-server optimization

我有一个简单的选择声明:

SELECT id1, id2, id3 FROM Table1

表1包含大约400,000条记录。

目前,此语句需要5秒钟才能执行。

是否可以对此进行优化(不减少返回的记录数量)?

3 个答案:

答案 0 :(得分:3)

添加一个包含所有三个字段的索引,这将导致SQL从索引页面读取。这也称为覆盖索引。但要记住的一件事是添加索引会减慢写入时间,因为在写入过程中必须重建索引。

CREATE INDEX IDX_CoveredIndex ON Table1 (id1, id2, id3)

然而,只有400K行,我想这可能不是问题。

答案 1 :(得分:1)

不,您的查询会导致简单的表扫描。只要您没有whereorder声明,就可以做到最好。

问题是,为什么选择没有过滤器的所有行?如果您在应用程序内部进行过滤,则说错了。

答案 2 :(得分:-1)

这不是正确的优化,但您应该尝试在表名后使用(nolock),这样您就不会在这5秒内锁定表格,允许其他人也使用它...

这只是在您尝试同时从多个位置访问表时进行优化,因此您无需等待一端使用该表来启动另一个,一次完成所有操作。

SELECT id1, id2, id3 FROM Table1 (nolock)
PS:这是SQL Server sintax ...不知道其他SGBD,但很确定有类似的...但是因为你的问题是关于SQL Server,我猜它确定! :)