美文网首页@IT·互联网程序员
mysql中sql优化之索引简介

mysql中sql优化之索引简介

作者: 小灰灰besty | 来源:发表于2017-04-20 14:13 被阅读0次

    索引用于快速找到与特定的列值的行。如果没有索引,Mysql会从第一行顺序遍历直到找到所有满足条件的行。那么大表就带来很大的消耗。但是如果有索引,mysql可以直接查找中间数据而不用遍历所有数据,效率高很多。

    Mysql的索引(PRIMARY KEY, UNIQUE, INDEX, and FULLTEXT)均使用B-trees存储。一些特殊的字段类型使用R-trees,内存存储引擎还支持哈希索引,

    对这些操作MySQL使用索引:

    • 迅速找到行匹配一个WHERE子句。

    • 如果有多个索引之间的选择,MySQL通常使用索引,找到最小的(最选择性指数)的行数。

    • 多列索引:
      如果表有多个列索引,可以使用任何左边的前缀索引的优化器来查找行。例如,如果你有一个三列的索引(col1、col2 col3),有索引搜索功能(col1),(col1,col2),(col1、col2、col3)。

    • 表连接时取行。MySQL可以使用更有效的索引列如果它们声明为相同类型和大小。VARCHAR与CHAR如果长度相同被认为是一样的索引类型可以使用索引。但是大小不同不可以。

    • 对于二进制字符串列之间的比较,这两列应该使用相同的字符集。例如,比较utf8列latin1不能使用索引。

    • 比较如果没有转换值不能直接比较的不同类型列,如字符串列时间或数字列不能使用索引。如数值类型的1和字符串的‘1’不能使用索引。

    • 需要查找一个有索引列的max和min,解析器会先去检查使用where条件的列的索引,再去查找max和min列的索引。在这种情况下,mysql将每个max和min表达式做一个键查找,并替换为一个常数,然后查询返回。

    image.png image.png image.png image.png Paste_Image.png Paste_Image.png Paste_Image.png

    相关文章

      网友评论

        本文标题:mysql中sql优化之索引简介

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