MySQL中的联合索引学习教程

2019-01-04 19:55:11于丽

 如果我们的数据库引擎是MyISAM,那么建立"category_id, created"复合索引就不是最佳答案。因为MyISAM的索引结构里,非主键索引并没有额外保存对应主键的值,此时如果想利用上Covering Index,应该建立"category_id, created, id"复合索引。

 唠完了,应该明白我的意思了吧。希望以后大家在考虑索引的时候能思考的更全面一点,实际应用中还有很多类似的问题,比如说多数人在建立索引的时候不从Cardinality(SHOW INDEX FROM ...能看到此参数)的角度看是否合适的问题,Cardinality表示唯一值的个数,一般来说,如果唯一值个数在总行数中所占比例小于20%的话,则可以认为Cardinality太小,此时索引除了拖慢insert/update/delete的速度之外,不会对select产生太大作用;还有一个细节是建立索引的时候未考虑字符集的影响,比如说username字段,如果仅仅允许英文,下划线之类的符号,那么就不要用gbk,utf-8之类的字符集,而应该使用latin1或者ascii这种简单的字符集,索引文件会小很多,速度自然就会快很多。这些细节问题需要读者自己多注意,我就不多说了。

您可能感兴趣的文章:

MySQL联合索引用法示例MySQL 联合索引与Where子句的优化 提高数据库运行效率mysql 添加索引 mysql 如何创建索引MySQL查看、创建和删除索引的方法MySQL 创建索引(Create Index)的方法和语法结构及例子MySQL 主键与索引的联系与区别分析基于mysql全文索引的深入理解MySQL 索引分析和优化MYSQL索引无效和索引有效的详细介绍mysql下普通索引和唯一索引的效率对比MySQL联合索引功能与用法实例分析