sql - 冗余相似索引

标签 sql sql-server database

我正在清理一个包含大量索引的数据库 (SQL Server 2012)。我相信,有些可以删除或合并。

例如,我有 index1 :

CREATE NONCLUSTERED INDEX [index1] ON [dbo].[MyTable]
(
    [Project] ASC
)
INCLUDE (a_bunch_of _columns)

index2:

CREATE NONCLUSTERED INDEX [index2] ON [dbo].[MyTable]
(
    [Project] ASC,
    [Type] ASC
)
INCLUDE (a_bunch_of _columns)

我在数据库统计中看到 index1index2 使用得更多,但我相信可以找到 index1 中的所有信息进入 index2。因此,如果删除 index1,数据库引擎将搜索 index2 而不是 index1 现在的做法。性能应该和现在一样好。 (甚至更好一点,因为要维护的索引会少一个)

这是正确的还是我遗漏了什么?

最佳答案

假设“a_bunch_of_columns”相同(或者第二列的列是第一列的超集),那么你是正确的。

第一个索引的唯一优点是它占用的内存空间较小。但是,与完全删除索引相比,这是一个非常非常微不足道的优势。

关于sql - 冗余相似索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37986352/

相关文章:

c# - WPF 保存 Canvas ,然后从持久状态中将其取回

java - spring datasource xml中的bean创建是否打开与数据库的连接?

javascript - 除了使用API​​之外,是否还有其他方法可以从外部网页获取数据来开发比较购物网站?

c# - 字符串数字的 Float.parse 导致数据库中的另一个数字

python - Django Azure SQL 编程错误无效的对象名称

ruby-on-rails - Postgresql 重复主键

mysql - 在同一列上使用多个 WHERE 条件进行选择

sql - Oracle SQL 根据列的最大值返回单行

mysql - mysql IF条件中的多个表达式

php - MySQL 日期重复