我有一个有趣的问题:群集索引和唯一索引之间有什么区别?什么更好,更快,为什么?
答案 0 :(得分:0)
使用MySQL的InnoDB引擎,您可以获得3种普通索引:
PRIMARY KEY
- “聚集”数据和“唯一”。 (通常AUTO_INCREMENT
)UNIQUE
- 唯一,非群集。INDEX
- 非唯一,非群集。所有都是以BTrees实现的。 “集群”表示数据位于叶节点中。
考虑:
PRIMARY KEY
。PRIMARY KEY
或UNIQUE
的列。UNIQUE
或INDEX
)通过PRIMARY KEY
查找数据。推论1:通过PK找到一行更快。推论2:庞大的(例如,VARCHAR(255)
)PK是每个二级密钥的额外负担。INSERT
必须立即检查PRIMARY KEY
和任何UNIQUE
个密钥是否重复,但它可能会延迟更新其他辅助密钥。 (此可能会影响插入期间的性能。)根据这些细节,有时可以推断出问题的答案。
(警告:InnoDB以外的引擎有一些不同的特征。)