zoukankan      html  css  js  c++  java
  • 常见问题:MySQL/索引

    普通索引

    最常用,没有任何限制。

    唯一索引

    必须唯一,但允许空值,如果是组合索引,列值的组合必须唯一。

    组合索引

    由于MySQL查询时,只能使用一个索引,因此建立组合索引在组合查询的场景下更加有效。组合索引是有顺序的,建立一个组合索引,其实相当于建立了所有该索引包含的前缀的索引,举例说明为,建立组合索引(id,time)相当于分别建立了(id,time)和(id)两个索引。

    聚集索引

    MySQL中的主键是聚集索引(innoDB)。一个表只能有一个聚集索引,按照B+树的方式存放,子节点就是数据。

    非聚集索引指向聚集索引,因此聚集索引更加直接。

    索引缺点

    建立索引可以大大提高查询速度,但是同时也会降低插入,更新和删除的效率(因为要维护B+树),索引也会占用一定的空间,索引过多则索引文件会膨胀很快。

    因此,以下情况不要用索引

    1. 唯一性差。
    2. 频繁更新。
    3. where语句不使用的字段。
    4. where语句对索引使用不等于(<>)操作时,索引效果一般。

    索引失效

    1. 使用or且两边存在非索引。
    2. 复合索引未使用左列。
    3. like以%开头。
    4. 需要隐性转换。(比如表里存的是字符串,没加引号)
    5. where中索引列有运算。
    6. where中索引使用了函数。(比如ABS)
    7. 数据少,mysql觉得全表扫描更快。

    参考文献

    索引失效的7种情况
    聚集索引与非聚集索引的总结
    mysql索引总结----mysql索引类型以及创建

  • 相关阅读:
    luogu P4009 汽车加油行驶问题
    luogu P4015 运输问题
    luogu P2763 试题库问题
    luogu P4011 孤岛营救问题
    luogu P2765 魔术球问题
    linux 网卡
    linux yum错误
    ubuntu登录备注信息
    Ubuntu网卡配置
    linux 走三层内网添加静态路由
  • 原文地址:https://www.cnblogs.com/cielosun/p/11503121.html
Copyright © 2011-2022 走看看