SQL 索引 - 这是重叠的吗?

标签 sql sql-server indexing

我正在检查并删除 SQL 数据库中的重复和冗余索引。

所以如果我有两个相同的索引,我会删除。

例如,如果我删除了重叠的索引...

  • 索引1:品牌、型号
  • 指标二:品牌、型号、价格

  • 我删除索引 1。

    相同顺序但有额外字段的索引呢?
  • 索引1:品牌、型号
  • 指标二:品牌、价格、型号

  • 我可以安全地删除索引 1 吗?

    我的猜测是否定的,但我不确定

    最佳答案

    好吧,当然你可以放弃它;你似乎有权限。但是,索引并不等效。

    例如,第一个将优化此查询:

    where brand = @brand and model = @model
    

    第二个将能够使用索引,但不是最佳的,因为它不能直接寻找到正确的行。引擎需要扫描所有 @brand索引中的记录以查找匹配的模型。因为这可以在索引本身中完成,所以应该有很好的性能。

    这对您的查询是否重要取决于查询的性质,但索引不是多余的。

    顺便说一下,我认为 MySQL documentation很好地解释了如何使用复合索引(不同的数据库在索引使用上并不完全相同,但它们非常相似)。

    关于SQL 索引 - 这是重叠的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604471/

    相关文章:

    python - numpy数组中非零值的随机索引

    mysql - 创建一个存储过程,在输入该行的 ID 时删除该行

    mysql - 在sql中的一行中转置多个值

    java - 使用日期和时间创建日期时间

    sql - 根据最大值连接表

    javascript - 例如使用filter()方法,如何同时返回满足条件的元素及其索引值?

    Mysql 缓慢 "OR"运算符,但联合或两个单独的联接似乎没有选择

    sql - SELECT 语句中 NOLOCK 提示的效果

    sql - DELETE 和 INSERT 后 Redshift (AWS) 上的 VACUUM

    sql - 使用变量作为列名