zoukankan      html  css  js  c++  java
  • SQL技巧及优化

    rand()函数:生成0到1之间的随机数,
    使用rand()和order by 可以把表中的记录随机排序
    例如:select * from t1 order by rand()

    group by 结合with rollup


    show status 查询sql执行频率:
    show status like ‘com_insert%’ 查询插入的次数
    show status like ‘com_select%’
    show status like ‘com_update%’
    show status like ‘com_delete%’

    针对innodb引擎的:
    show status like ‘innodb_rows%’;
    +———————-+———-+
    | Variable_name | Value |
    +———————-+———-+
    | Innodb_rows_deleted | 1 |
    | Innodb_rows_inserted | 6518 |
    | Innodb_rows_read | 58519129 |
    | Innodb_rows_updated | 4 |
    +———————-+———-+
    4 rows in set (0.00 sec)

    慢查询次数:
    show status like ‘%slow_queries%’;
    优化 :
    1通过慢查询日志找到执行效率低的SQL语句
    2 explain select * from tousu G

    id: 1
    select_type: SIMPLE
    table: tousu
    type: ALL
    possible_keys: NULL
    key: NULL
    key_len: NULL
    ref: NULL
    rows: 5
    Extra:
    1 row in set (0.00 sec)

    select_type:
    SIMPLE :简单表,即不使用表连接和子查询
    PRIMARY :主查询
    UNION :
    SUBQUERY:子查询

    type:ALL 通过全表扫描得到的数据
    range 范围扫描
    index_merge 索引合并优化
    eq_ref 使用主键和唯一

    possible_keys :表查询可能使用的索引
    key :实际使用的索引
    key_len :索引字段的长度

    总结:通过慢查询定位到SQL,然后explain看此SQL是否使用到索引

    索引:通过索引可以解决大多数的性能问题
    myISAM 引擎表的数据和索引分开存储,各自独立的文件,
    innodb 引擎表数据和索引存储在同一个表空间中,可以有多个文件组成

    使用like查询,后面如果是常量并且只有%号不在第一个字符,索引才可能被使用。
    如果对大的文本搜索,使用全文索引而不使用’%%’

    查询group by 后面,默认分组升序排列,可以再加上order by null,避免排序的性能损耗。
    避免使用子查询和嵌套查询,此种查询不会使用索引,,改为左右连接查询

    mysql 读写锁:
    读锁:锁定后,别人也可以读,但不能写
    写锁:只有自己可以操作,别人什么操作都不能做。
    mysql四种字符集:
    db
    server
    conn
    client

    如何设置字符集:my.conf中修改


    查看慢查询日志是否开启:
    show variables like ‘%slow%’;

    慢查询时间
    show variables like ‘%long%’;
    开启慢查询日志:
    linux 下
    vi /etc/my.conf
    log_slow_queries=slow.log
    long_query_time=8

  • 相关阅读:
    案例详解:MTU不一致导致主机和RAC不断重启
    近千人观看live,晚8点继续安排,2个CPU过高案例+1个文件数据删除案例->Oracle故障分析的方法论+DBA能力提升要领...
    一个模版让报表自动生成,领导:这才是数据分析人该干的事
    如何构造一个 SYN_SENT 状态的连接
    TCP 3次握手原理
    SpringCloud Alibaba微服务番外一
    socket bind 随机端口
    Yii项目Security加密解密类提取
    linux中iptables配置文件及命令详解详解
    linux中iptables配置文件及命令详解详解
  • 原文地址:https://www.cnblogs.com/luleiitlife/p/8545078.html
Copyright © 2011-2022 走看看