sql-server - 复合索引 - SQL Server

标签 sql-server composite-index

sys.dm_db_index_usage_stats DMV 提供有关 sql server 中索引的查找和扫描次数的信息

我有大量包含多个列的复合索引。我怀疑这些索引会导致大量维护开销,并且想缩小列数。

有没有一种方法可以找到针对复合索引中各个列的搜索和扫描。

最佳答案

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

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

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

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

关于sql-server - 复合索引 - SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955101/

相关文章:

sql-server - SQL Server 中的复合聚集索引

mysql - 为什么我的 MySQL 复合索引的基数小于同一列上的单个索引?

mysql - MySql 中的复合索引可以双向工作吗?

mysql - 从 SQL Server(ODBC 连接)使用 MySQL 作为链接服务器时查询缓慢

sql-server - 如何更改 MS SQL Server 中的架构所有者?

sql-server - postgresql(PostGRES) 和 SQL (Spatial) 结果的差异

mysql - mysql复合索引会让其他一些索引完全多余吗?

sql - 在特定组之后在 SQL 输出中动态创建行

sql - SQL中如何去除字符串中的重复项