复合索引 - SQL Server

发布于 2024-08-16 03:37:42 字数 156 浏览 6 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九公里浅绿 2024-08-23 03:37:42

SQL Server 不实现SKIP SCAN,因此对复合索引的查找始终包括索引的最左边(前导)列。

也就是说,如果您在 (col1, col2) 上有索引,则索引查找可用于搜索 col1col1 col2,但不适用于 col2 单独。

如果您搜索所有这些列,您很可能会从使用索引中受益。

您提到的“维护开销”是多少?单列索引和多列索引之间有什么区别?

SQL Server does not implement SKIP 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 for col1 or col1 and col2, but not for col2 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?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文