
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
索引的应用是程序员在学习MySQL数据库开发架构的时候需要熟练掌握并应用的一个编程开发技术,而本文我们就通过案例分析来了解一下,聚簇索引的优势分析。
1.使用聚簇索引的优势
Q:既然有回表的存在,那么聚簇索引的优势在哪里?
由于行数据和聚簇索引的叶子结点存储在一起,同一页中会有多条行数据,访问同一数据页不同行记录时,已经把也加载到了buffer中(缓存器),再次访问时,会在内存中完成访问,不必访问磁盘,这样主键和行数据是一起被载入内存的,找到叶子结点就可以立刻将行数据返回了,获得数据更快。
辅助索引的叶子结点,存储主键值,而不是数据的存放地址,好处是当行数据发生变化时,索引树的节点也需要分裂变化,或者是我们需要查找的数据,在上一次读写的缓存中没有,需要发送一次新的IO操作时,可以避免对辅助索引的维护工作,只要维护聚簇索引树就好了,另外一个好处是,因为辅助索引存放的是主键值,减少了辅助索引占用的存储空间的大小。
Q:主键索引作为聚簇索引需要注意什么
当使用主键为聚簇索引时,主键好不要使用UUID,因为UUID的值过于离散(可以查看UUID的产生过程),不适合排序,并且可能在两个已经排序好的结点中会出现新插入的节点,导致索引树调整复杂度变大。
建议使用int类型的自增,int类型自增主键数据量为4亿,满足一般开发要求,并且由于自增,主键本身就有序,因此开销很小,辅助索引中保存的主键值也会跟着变化,占用存储空间,也会影响到IO操作读取到的数据量。
2.什么情况下无法使用索引
查询语句中使用Like关键字
在查询语句中使用LIke关键字进行查询时,如果匹配字符串的一个字符为"%",索引不会使用。如果“%”不是在一位,索引就会使用
查询语句中使用多列索引
多列索引是在表的多个字段上创建的索引,满足左前缀匹配原则,索引才会被使用
查询语句中使用OR关键字
查询语句只有Or关键字时候,如果OR前后的两个条件都是索引,这这次查询将会使用索引,否则Or前后有一个条件的列不是索引,那么查询中将不使用索引
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。