复合索引 - SQL Server
sys.dm_db_index_usage_stats DMV 提供有关 sql server 中索引的查找和扫描次数的信息
我有大量包含多个列的复合索引。我怀疑这些索引会导致大量的维护开销,并且想缩小列数。
有没有一种方法可以找到针对复合索引中各个列的搜索和扫描。
The sys.dm_db_index_usage_stats DMV gives information about number of seeks and scans against a index in sql server
I have a large number of composite index that includes multiple columns. I suspect that these indexes cause a lot of maintenance overhead ann would like to narrow the number of columns.
Is there a way we can find out seeks and scans against a indivudual columns in a composite index.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SQL Server
不实现SKIP SCAN
,因此对复合索引的查找始终包括索引的最左边(前导)列。也就是说,如果您在
(col1, col2)
上有索引,则索引查找可用于搜索col1
或col1
和col2
,但不适用于col2
单独。如果您搜索所有这些列,您很可能会从使用索引中受益。
您提到的“维护开销”是多少?单列索引和多列索引之间有什么区别?
SQL Server
does not implementSKIP SCAN
, so a seek over a composite index always includes leftmost (leading) columns of the index.That is, if you have an index on
(col1, col2)
, the index seek may be used for searching forcol1
orcol1
andcol2
, but not forcol2
alone.If you search for all of these columns, you will most probably benefit from using the index.
What is the "maintenance overhead" you mentioned and how does it differ between single-column and multiple-column indexes?