我正在使用SQL 2000,我在一个包含大约3000万行的表上运行一个简单的select语句.选择查询如下所示:
select col1, col2, col3 from Table1 where col4=@col4 and col5=@col5 and col6=@col6
Run Code Online (Sandbox Code Playgroud)
该表中有一个聚簇索引(即一个主键),但它没有被用作where标准.上面提到的所有标准都没有索引.
如何优化此查询?
如果我在where子句中为每列添加索引,那会有什么不同吗?
如果我在where子句中有10列,那么这10列中的所有列都应该有索引吗?
编辑:这可能是最常见的面试问题之一:)
是的,它将产生巨大的变化.
您应该添加一个包含三个字段的索引,而不是为每个字段添加一个索引.(当然,这在实践中如何使用取决于字段的独特性以及您将在表格中使用的其他查询.)
请注意,在向表中插入或删除记录或更新记录的索引字段时,添加索引也会产生很小的负面影响.