是否没有必要创建其他索引?

时间:2018-01-29 18:42:28

标签: mysql indexing database-indexes

如果我在列上有唯一键,是否会使得在同一列上没有其他索引?

如果它是多列唯一键怎么办?这是否不必在唯一索引列列表中的FIRST列上添加其他索引?

关于SO也有类似的问题,但我希望在这个狭窄的背景下得到明确的答案。

2 个答案:

答案 0 :(得分:2)

  

如果我在列上有唯一键,是否会使得在同一列上没有其他索引?

是。 UNIQUE KEY隐式创建索引。

  

如果它是多列唯一键怎么办?这是否不必在唯一索引列列表中的FIRST列上添加其他索引?

是。任何需要搜索第一列的查询都可以使用多列索引。

通过类比,如果我要求您在电话簿中搜索名为“Smith,Sarah”的人,就像搜索带有两列的复合索引一样。如果我要求您使用同一本电话簿搜索姓氏为“Smith”的人,即使您不需要搜索第二列,第一列的排序顺序仍然有用。

答案 1 :(得分:1)

  

这样就不必在其上添加额外的索引   列?

  

如果它是多列唯一键怎么办?

是的,可以使用更多的索引和唯一索引。

==详细说明==

每次在桌面上执行DML时都应该记住。它必须重组你的索引。因此,这完全取决于您取得的成就以及您准备妥协的内容。

假设您正在使用某个数据库,其查询性能(SELECT)很慢。现在,您考虑创建索引,最终提高了一些性能。所以,你想,有必要有这个索引。

稍后,在某一天之后,您在同一个表上执行任何DML操作时开始观察缓慢。现在,取决于你准备好了什么。这可以定义为(un)你需要的。

<强> 8.3 Optimization and Indexes

  

尽管为每种可能的方法创建索引都很诱人   在查询中使用的列, 不必要的索引会浪费空间和浪费时间   用于MySQL确定要使用的索引。索引也增加了   插入,更新和删除的成本,因为每个索引必须是   已更新。 您必须找到合适的余额才能实现快速查询   最佳索引集。