我在优化查询方面遇到了问题。
我有一个包含70 +百万行的表,并且它没有索引,我想为它添加一个索引。我只是问,即使对该特定表执行的查询没有WHERE子句,是否在其上放置索引也会有所帮助?
即。
CREATE CLUSTERED INDEX idx_1 on Table
(
Column1,
Column2,
Column3
)
如果我选择了创建索引且没有WHERE Clause
的特定列,下面的查询是否会优化?
SELECT Column1, Column2, Column3 FROM Table
我知道WHERE子句会在执行计划中产生一个INDEX SEEK,但是如果在表上创建了索引并且查询中没有包含WHERE子句,它会运行得快吗?
答案 0 :(得分:0)
默认情况下,主键是索引。因此,如果您没有主键或任何索引,那么索引将有助于以指数方式加快查询速度。
答案 1 :(得分:0)
答案 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/