MySQL 上相同基数的 UNIQUE INDEX 和 INDEX 之间有性能差异吗?

Pla*_*er1 3 mysql index

我有一张桌子,上面有idcreated_at

Column     | Non Unique | Cardinality
-------------------------------------
id         | 0          | 1000
created_at | 1          | 1000
Run Code Online (Sandbox Code Playgroud)

idunique,并且created_atnon unique

我想知道如果将索引created_at从转换non uniqueunique.

Ric*_*mes 5

首先,我必须强调,您应该UNIQUE在需要唯一性检查时使用,而不是出于性能考虑。

也就是说,以下是一些小的性能考虑因素:

INSERT在确认插入之前检查唯一性。这会(稍微)减慢INSERTs. 平原INDEX被延迟并且直到稍后才真正执行。请参阅“更改缓冲”。这加快了非唯一索引的维护速度(一点点)。

A SELECT,当使用非唯一索引时(除非其他东西阻止它),将读取行直到值不同。通过UNIQUE索引,它知道在找到一行后停止。(同样,性能略有差异。)