• Mysql索引操作


    1、索引语法

    2、慢查询日志

    慢查询日志记录了所有执行时间超过指定参数( long_query_time ,单位:秒,默认 10 秒)的所有
    SQL 语句的日志。
    MySQL 的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log

    开启慢查询日志,需要在 MySQL 的配置文件( /etc/my.cnf )中配置如下信息:
    检查慢查询日志 :
    最终我们发现,在慢查询日志中,只会记录执行时间超多我们预设时间( 2s )的 SQL ,执行较快的 SQL是不会记录的。

    3、profile 和explain

    profile 能够在做SQL 优化时帮助我们了解时间都耗费到哪里去了
    通过 have_profiling参数,能够看到当前 MySQL 是否支持 profile 操作:
    1、SELECT @@have_profiling ; 
    2、SET profiling = 1;  开启 profiling
    3、执行sql语句
    4、
    EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行
    过程中表如何连接和连接的顺序。

    4、索引设计原则

    1). 针对于数据量较大,且查询比较频繁的表建立索引。
    2). 针对于常作为查询条件( where )、排序( order by )、分组( group by )操作的字段建立索
    引。
    3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。
    4). 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。
    5). 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。
    6). 要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增删改的效率。
    7). 如果索引列不能存储 NULL 值,请在创建表时使用 NOT NULL 约束它。当优化器知道每列是否包含 NULL 值时,它可以更好地确定哪个索引最有效地用于查询。

  • 相关阅读:
    Java常见类型数据及其包装类—byte类型,String类型,boolean类型
    EvilJS 的 Golang 实现
    centos7 docker 安装
    C++ this 指针 面试
    基于JavaSwing开发联机坦克游戏(服务器+客户端) 课程设计 大作业
    React高频面试题100+题,这一篇就够了!
    开源分布式存储系统(HDFS、Ceph)架构分析
    java建筑公司工程信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    特征值和特征向量(3Blue1Brown学习笔记)
    LeetCode 394. 字符串解码
  • 原文地址:https://blog.csdn.net/lingxiyizhi_ljx/article/details/136239298