zoukankan      html  css  js  c++  java
  • 索引?

    索引包含一个或多个列的值。MySql只能高效的利用索引的最左前缀列。索引的优势:

    • 减少查询扫描的数据量

    • 避免排序和零时表

    • 将随机IO变为顺序IO (顺序IO的效率高于随机IO)

    B-Tree使用最多的索引类型。采用B-Tree数据结构来存储数据(每个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的遍历)。B-Tree索引适用于全键值,键值范围,键前缀查找,支持排序。B-Tree索引限制:

    • 如果不是按照索引的最左列开始查询,则无法使用索引。

    • 不能跳过索引中的列。如果使用第一列和第三列索引,则只能使用第一列索引。

    • 如果查询中有个范围查询,则其右边的所有列都无法使用索引优化查询。

    哈希索引只有精确匹配索引的所有列,查询才有效。存储引擎会对所有的索引列计算一个哈希码,哈希索引将所有的哈希码存储在索引中,并保存指向每个数据行的指针。题精选哈希索引限制:

    • 无法用于排序

    • 不支持部分匹配

    • 只支持等值查询如=,IN(),不支持 < >

    优化建议点

    • 注意每种索引的适用范围和适用限制。

    • 索引的列如果是表达式的一部分或者是函数的参数,则失效。

    • 针对特别长的字符串,可以使用前缀索引,根据索引的选择性选择合适的前缀长度。

    • 使用多列索引的时候,可以通过 AND 和 OR 语法连接。

    • 重复索引没必要,如(A,B)和(A)重复。

    • 索引在where条件查询和group by语法查询的时候特别有效。

    • 将范围查询放在条件查询的最后,防止范围查询导致的右边索引失效的问题。

    • 索引最好不要选择过长的字符串,而且索引列也不宜为null。

  • 相关阅读:
    欢迎来怼--第二十三次Scrum会议
    作业要求 20171102 每周例行报告
    小程序中添加快递查询
    微信小程序——获取用户unionId
    nodejs开发 过程中express路由与中间件的理解
    nodejs 学习心得
    js中小知识记录
    TypeError: db.collection is not a function
    MONGODB安装教程
    CSS设置DIV背景色渐变显示--针对不同浏览器,背景渐变的兼容问问题
  • 原文地址:https://www.cnblogs.com/programb/p/14089689.html
Copyright © 2011-2022 走看看