即使您的查询在T-SQL中没有WHERE子句,也可以索引帮助吗?

时间:2014-05-29 04:40:29

标签: sql sql-server indexing

我在优化查询方面遇到了问题。

我有一个包含70 +百万行的表,并且它没有索引,我想为它添加一个索引。我只是问,即使对该特定表执行的查询没有WHERE子句,是否在其上放置索引也会有所帮助?

即。

CREATE CLUSTERED INDEX idx_1 on Table
(
 Column1,
 Column2,
 Column3
)

如果我选择了创建索引且没有WHERE Clause的特定列,下面的查询是否会优化?

SELECT Column1, Column2, Column3 FROM Table

我知道WHERE子句会在执行计划中产生一个INDEX SEEK,但是如果在表上创建了索引并且查询中没有包含WHERE子句,它会运行得快吗?

3 个答案:

答案 0 :(得分:0)

默认情况下,主键是索引。因此,如果您没有主键或任何索引,那么索引将有助于以指数方式加快查询速度。

答案 1 :(得分:0)

是的,但不是那么多。

您可以阅读更多here

  

索引有助于加速SELECT查询和WHERE子句。

答案 2 :(得分:0)

是的,这绝对是有效的。使用" Where"子句是好还是说最好,原因是where子句过滤有利于缩小搜索范围的数据。

作为您的问题,最好在主列上创建主键,如果是自动增量的int则最好。原因是主键自动创建聚簇索引,该索引与物理数据的顺序相同,因此比非聚簇快。即使你没有以有效的方式使用其工作条件。

如果您已经拥有主键而且经常使用其他列而不使用"其中"子句,然后制作非聚集索引。但不建议超过4或5(没有规则,但更多地避免非聚集索引,这会降低性能)

了解索引。

http://www.programmerinterview.com/index.php/database-sql/what-is-an-index/

http://www.mssqltips.com/sqlservertip/1206/understanding-sql-server-indexing/

我不确定,但是查看索引会对你有帮助。

http://msdn.microsoft.com/en-IN/library/ms191432.aspx

https://www.simple-talk.com/sql/learn-sql-server/sql-server-indexed-views-the-basics/