首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否没有必要创建额外的索引?

问是否没有必要创建额外的索引?
EN

Stack Overflow用户
提问于 2018-01-29 18:42:28
回答 2查看 65关注 0票数 2

如果列上有一个唯一的键,那么是否没有必要在同一列上增加一个索引?

如果它是一个多列唯一的键呢?这样是否就没有必要在唯一索引列列表的第一列上增加一个索引?

在这方面也有类似的问题,但我想在这个较窄的范围内得到一个明确的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-29 19:28:24

如果列上有一个唯一的键,那么是否没有必要在同一列上增加一个索引?

是。UNIQUE KEY隐式地创建索引。

如果它是一个多列唯一的键呢?这样是否就没有必要在唯一索引列列表的第一列上增加一个索引?

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

打个比方,如果我让你在电话簿上搜索名为"Smith,Sarah“的人,就像你搜索一个包含两列的复合索引。如果我要求你用同样的电话簿搜索姓"Smith“的人,那么第一列的排序仍然有帮助,即使你不需要搜索第二列。

票数 2
EN

Stack Overflow用户

发布于 2018-01-29 18:51:02

这样就没有必要在同一列上增加索引了吗?

是。

如果它是一个多列唯一的键呢?

是的,除了唯一的索引之外,再多几个索引也不错。

==Detailed Explanation==

您应该记住,每次在表上执行DML时。它必须重组你的索引。所以,这完全取决于你正在取得什么成就,你准备妥协什么。

假设您正在处理某个数据库,其查询性能(SELECT)比较慢。现在,您考虑创建索引,这最终提高了一些性能。所以,你认为,有必要建立这个指数。

稍后,在某一天之后,您开始观察在同一表上执行任何DML操作时的缓慢性。现在,取决于你准备好的内容。这可以被定义为对你来说是必要的。

8.3优化和指数

虽然为查询中使用的每一列创建索引是很有诱惑力的,但不必要的索引会浪费空间和时间让MySQL决定使用哪些索引。索引还会增加插入、更新和删除的成本,因为每个索引都必须更新。必须找到正确的平衡,才能使用最优的索引集实现快速查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48507943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档