美文网首页
mysql 组合索引的理解

mysql 组合索引的理解

作者: Mr_dreamer | 来源:发表于2020-02-19 19:38 被阅读0次

    mysql索引是占用磁盘空间的,索引越多对空间的占用也就越大,写开销也越大,而对于组合索引,如:index(col1,col2,col3) 相当于建立了3个索引,index(col1)``index(col1,col2)``index(col1,col2,col3) 这样一个索引达到了3个索引的作用,节省了磁盘空间,也降低了写开销。

    而对于组合索引,需要重点关注的一点就是 最左原则
    最左原则举个简单的例子就是

    条键 是否走索引 说明
    where col1=1 因为col1 在创建索引的最左边)
    where col2=2 因为col2 不是最左边的列
    where col1=1 and col2=2 因为 col1和col2是从左向右排列的

    对于 where col2=2 这个条键是有可能走索引的 只不过是 index类型的索引。
    组合索引 可以理解为 mysql 内部是从最左元素先排序,然后之后的元素在进行排序, 类似于 orderby col1,col2,col3 所以查找时 最左元素肯定是有序的,而跳过最左元素,又是无序的了。

    遵循了最左原则,条件顺序就无所谓了,因为mysql优化器会自动找到最有效率的执行顺序

    PS 我写的文章真是烂啊

    参考文章:
    https://segmentfault.com/a/1190000015416513
    https://www.zhihu.com/question/36996520

    相关文章

      网友评论

          本文标题:mysql 组合索引的理解

          本文链接:https://www.haomeiwen.com/subject/seqzfhtx.html