
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了数据库索引的一些基础知识等内容,而本文我们就再来了解一下,高性能索引优化方法都有哪些。
1、必须是“独立的列”,否则不会使用索引
如果是表达式中的一部分,则不是独立的列。
如果是函数的参数,则怒视独立的列。
2、前缀索引
概念:有时候索引很长的字符列会让索引变得大且满。通常可以索引开始的部分字符,在提高效率的同时可大大节约索引空间。
前缀索引会降低索引的选择性。
对于BLOB、TEXT或者很长VARCHAR类型的列,必须使用前缀索引!
合适的长度的诀窍:选择足够长的前缀以保证较高的选择性,同时又不能太长以便节约空间。
计算合适的长度:
使前缀的选择性接近于完整列的可选择性。
前缀函数:LEFT(calume,len)
3、多列索引
反面教材:在所有字段上创建单列索引
5.0版本前:性能不如全表扫描
5.0及其后:会在单列索引基础上执行合并策略,但浪费cpu、mem等资源,尤其大数据量时
当explain的Extra出现索引合并时,说明此时需要一个多列索引
4、选择合适的索引列顺序
1.正确的索引顺序依赖于使用该索引的查询的顺序,并且需要同时考虑如何更好的满足排序和分组的需要。
2在多列b-tree索引中,索引的顺序:先按照左边的列排序,然后是二列,等等。
3性能不仅与索引列的可选择性(基数)有关,也和值的分布有关。
5、clustered聚簇索引
并不是一种单独的索引类型,而是一种数据存储方式。
InnoDB的聚簇索引在同一个结构中同时保存了B-Tree索引和数据行。即:在InnoDB中聚簇索引就相当于“表”。
术语”聚簇“表示数据行和相临的键值紧凑地存储在一起。
节点页只包含索引列
叶子页包含了行的全部数据
一个表只能有一个聚簇索引。
InnoDB通过主键聚集数据,即在主键上建立聚簇索引。如果没有定义主键,则会选择一个的非空索引代替,如果没有这样的索引,则会隐式的定一个主键来作为聚簇索引。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。