• MYSQL高级第二天(4)


    一、索引的使用:

    索引是数据库优化最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的mysql的性能优化问题。

    1.1 索引的使用:

    create table tb_seller(
        sellerid varchar(100),
        name varchar(100),
        nickname varchar(50),
        password varchar(60),
        status varchar(1),
        address varchar(100),
        createtime datetime,
        primary key(sellerid)
    )engine=innodb default charset=utf8mb4;
    

      创建索引:

    create index idx_seller_name_sta_address on tb_seller(name,status,address);
    

      

    1.2 避免索引失效:

    1、全值匹配,对索引中所有列都指定具体值。

      该情况下,索引生效,执行效率高。

    2、最左前缀法则

      如果索引了多列,要遵循最左前缀法则,指的是查询从索引的最左前列开始,并且不跳过索引中的列。

    1.3 索引失效的情况:

    1. 不遵循最左前缀法则;(和索引字段的顺序无关,只看包不包含);
    2. 范围查询右边的列,索引失效;
    3. 索引列上进行计算;
    4. 字符串列不加引号;
    5. 用or分隔开的条件,or前后的条件都必须同时有索引,否则索引失效;
    6. 以%开头的like模糊查询;
    7. 如果mysql评估使用索引比全表查询更慢,则不使用索引;
    8. is null,is not null有时索引失效;
    9. in走索引,not in索引失效;
    10. 包含最左前缀的列,但条件中间出现跳跃,则缺失字段后面的索引失效。(同爬楼梯,中间不能断层)。

    1.4 查看索引使用情况:

    show status like "Handler_read%";        --当前会话
    show global status like "Handler_read%";      --全局
    

    注意:

    1. 使用select *的时候,如果存在索引范围外的字段,则使用索引后,仍需要回表查询;
    2. 单列索引不需要遵循最左前缀法则,只有复合索引才需要遵循;
    3. 多个单列索引,数据库会自动选择最优索引(辨识度最高【查询记录越少,辨识度越高】);
    4. 尽量使用复合索引,少使用单列索引。
  • 相关阅读:
    Ajax的基本使用
    Jquery--动画
    JQuery基础(选择器、事件、DOM操作)
    LinQ 创建连接、简单增删改查
    分页查询/组合查询
    分页查询、组合查询
    JavaScript
    WebForm Response和Request以及Cookie
    Response、Request、QueryString,修改,Cookies
    Repeater
  • 原文地址:https://www.cnblogs.com/haokan/p/16472003.html
Copyright © 2020-2023  润新知