• 三,mysql优化--sql语句优化之索引一


    1,需求:如何在一个项目中,找到慢查询的select,mysql数据库支持把慢查询语句,记录到日志中。供程序员分析。(默认不启用此功能,需要手动启用)

     修改my.cnf文件(有些地方是my.ini)  

        增加或修改参数slow_query_log 和slow_query_log_file后,然后重启MySQL服务器,如下所示

        slow_query_log =1

        slow_query_log_file=/tmp/mysql_slow.log

    2,使用索引的优缺点

    优点:

    (1)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

    (2) 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

    (3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

    (4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

    (5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    缺点:

    (1) 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

    (2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

    (3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

    3,分析sql执行效率,通过explain可以知道mysql是如何处理语句,分析出sql执行过程中遇到的瓶颈。

    explain select * from news;

    id 1  
    select_type SIMPLE 表示sql语句可能使用到的索引,如果没有使用,就写simple
    table news 表示sql语句中涉及数据表,多表查询,显示多个数据表
    type ALL

    表示对数据表访问方式,(1)ALL表示全表扫描;(2)system表示仅有一行(=系统表),这是const连接类型的一个特例;(3)const表示最多有一个匹配行;
    如果使用索引,此处值是const,表示非全表扫描

    possible_keys N 表示可能用到的索引
    key N 表示实际用到的索引
    key_len N 表示索引长度
    ref N 表示索引的哪一列被使用了,如果可能的话,是一个常数const的值
    rows 2 表示从多少行中取出
    Extra N

    表示关于mysql如何解析查询的额外信息。比如

    (1) no tables,sql中不用数据库,explain select max(10) from news;

    (2) using filesort,使用文件排序,通常Query中包含ORDER BY操作,而且无法利用索引完成排序。explain select * from news order by title;

    (3) using temporary,某些操作必须使用临时表,常见GROUP BY,ORDER BY

    (4) Using where,不用读取表中所有信息,仅通过索引就可以获取所需数据。

  • 相关阅读:
    java设计模式-适配器模式
    java设计模式-外观模式
    java设计模式-享元模式
    java设计模式-装饰模式
    java设计模式-组合模式
    java设计模式-桥接模式
    12月Java原生商城APP源码-完全开源
    uniapp插件市场-涂图视频编辑-美妆-剪辑-微整形原生sdk插件发布-优雅草科技
    12月最新仿知音漫画网站源码+手机端,小说漫画生成静态文件,超强负载量安全可靠
    如何把网易云音乐ncm格式转换成mp3格式---记一下
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/5784086.html
Copyright © 2020-2023  润新知