如果列上有一个唯一的键,那么是否没有必要在同一列上增加一个索引?
如果它是一个多列唯一的键呢?这样是否就没有必要在唯一索引列列表的第一列上增加一个索引?
在这方面也有类似的问题,但我想在这个较窄的范围内得到一个明确的答案。
发布于 2018-01-29 19:28:24
如果列上有一个唯一的键,那么是否没有必要在同一列上增加一个索引?
是。UNIQUE KEY隐式地创建索引。
如果它是一个多列唯一的键呢?这样是否就没有必要在唯一索引列列表的第一列上增加一个索引?
是。任何需要搜索第一列的查询都可以使用多列索引。
打个比方,如果我让你在电话簿上搜索名为"Smith,Sarah“的人,就像你搜索一个包含两列的复合索引。如果我要求你用同样的电话簿搜索姓"Smith“的人,那么第一列的排序仍然有帮助,即使你不需要搜索第二列。
发布于 2018-01-29 18:51:02
这样就没有必要在同一列上增加索引了吗?
是。
如果它是一个多列唯一的键呢?
是的,除了唯一的索引之外,再多几个索引也不错。
==Detailed Explanation==
您应该记住,每次在表上执行DML时。它必须重组你的索引。所以,这完全取决于你正在取得什么成就,你准备妥协什么。
假设您正在处理某个数据库,其查询性能(SELECT)比较慢。现在,您考虑创建索引,这最终提高了一些性能。所以,你认为,有必要建立这个指数。
稍后,在某一天之后,您开始观察在同一表上执行任何DML操作时的缓慢性。现在,取决于你准备好的内容。这可以被定义为对你来说是必要的。
虽然为查询中使用的每一列创建索引是很有诱惑力的,但不必要的索引会浪费空间和时间让MySQL决定使用哪些索引。索引还会增加插入、更新和删除的成本,因为每个索引都必须更新。必须找到正确的平衡,才能使用最优的索引集实现快速查询。
https://stackoverflow.com/questions/48507943
复制相似问题