sql – 聚簇索引比带有包含的非聚集索引更快吗?

前端之家收集整理的这篇文章主要介绍了sql – 聚簇索引比带有包含的非聚集索引更快吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Better to use a Clustered index or a Non-Clustered index with included columns?3个
我有一个表格,其中列a,b,c,d,e,f,g大约有500,000行.

有一个查询经常运行,它执行SELECT * FROM表WHERE a = @a AND b = @b AND c = @c.

在a,b和c上创建聚簇索引是否更好?或者我最好在a,b和c INCLUDE(d,g)上创建非聚集索引.

自发出select *以来,不确定include会帮助加快查询速度.

任何帮助,将不胜感激!

解决方法

聚簇索引对于SELECT来说是最快的,但它可能不一定是正确的选择.

聚簇索引确定记录的物理存储顺序(这就是为什么每个表只能有一个).因此,虽然它对于THAT查询来说是最快的,但它可能会减慢其他查询的速度,并且如果其中一个列发生更改,则可能会更新和插入Kill,这可能意味着需要对记录进行物理重新定位.

如果更新了任何这些字段(包括包含的字段),则INCLUDE将以额外存储和额外索引维护为代价再次加速该查询.

我将在a,b和c上使用非聚集索引启动,并查看是否可以将性能提升到合理的水平.更多的东西可能只是在一个区域的交易速度,在另一个区域的缓慢.

猜你在找的MsSQL相关文章