我有一张桌子,上面有id和created_at。
Column | Non Unique | Cardinality
-------------------------------------
id | 0 | 1000
created_at | 1 | 1000
Run Code Online (Sandbox Code Playgroud)
id是unique,并且created_at是non unique。
我想知道如果将索引created_at从转换non unique为unique.
首先,我必须强调,您应该UNIQUE在需要唯一性检查时使用,而不是出于性能考虑。
也就是说,以下是一些小的性能考虑因素:
INSERT在确认插入之前检查唯一性。这会(稍微)减慢INSERTs. 平原INDEX被延迟并且直到稍后才真正执行。请参阅“更改缓冲”。这加快了非唯一索引的维护速度(一点点)。
A SELECT,当使用非唯一索引时(除非其他东西阻止它),将读取行直到值不同。通过UNIQUE索引,它知道在找到一行后停止。(同样,性能略有差异。)