MySQL 前缀索引是什么?cardinality 怎么理解?
前缀索引:对长字符串列只取前 N 字符建索引(KEY idx(name(10))),节省索引空间、加快写入;代价:区分度可能下降(不同值前缀相同)、ORDER BY 无法用索引排序、覆盖索引失效。cardinality:索引列去重值的数量(基数),基数越高区分度越好;查询优化器用它估算选择性与是否走索引;ANALYZE TABLE 更新统计信息。设计:前缀长度取使区分度接近全列的长度(SELECT COUNT(DISTINCT LEFT(name, 10)) / COUNT(*) 测试)。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。