• MYSQL 索引创建与使用


    可能用到索引的地方:

    where 子句,order by,group by

    不需要创建索引的情况:

    1. 表比较小

    2.赋值有限的列(枚举),不要创建索引。创建的索引返回的行越少越好,此时区分度大。

    3.用不上索引的列,不要创建索引。

    4.长字符串的列,不要全部创建索引,但可以使用短索引(名字的头8个字符)。

    索引有效的情况:

    <,<=,=,>,>=,between,in,like 'admin%',独立索引+or+独立索引+mysiam

    索引失效的情况:

    1. or+innodb

    3. like查询是以%开头,不使用索引。like '%admin' 

    4. 字符类型在where子句中不加引号,不使用索引

    5. not in 或<> 或!= 

    6.对字段加函数或者运算的

    7. 在order by操作中,mysql只有在排序条件不是查询条件表达式时才使用索引。尽管如此,在涉及多个数据表的查
    询里,即使有索引可用,那些索引在加快ORDER BY操作方面也没什么作用。

    9. 在JOIN操作中,只有在主键和外键的数据类型相同时才能使用索引,否则即使建立了索引也不会使用。

    10. is not null 或 is null 索引会失效

    11. 如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

    比如:列id均匀的分布在1-100之间。下面的sql则不会使用索引
    select * from table_name where id > 1 and id<90;
     

    查看索引的使用情况
    show status like ‘handler_read%';
    大家可以注意:
    handler_read_key:这个值越高越好,越高表示使用索引查询到的次数
    handler_read_rnd_next:这个值越高,说明查询低效

  • 相关阅读:
    overflow :hidden隐藏溢出用处大
    datalist 数据展示顺序
    SEO 特定搜索和外链技巧
    Android网络地址簿同步的方式
    表单全选及取消全选
    for循环的嵌套之小星星。
    数组的方法中那些会改变原数组呢?
    for循环的嵌套之打印倒三角的星星
    Js中的排他思想
    计算阶乘的思路。
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/6262947.html
Copyright © 2020-2023  润新知