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

  • 相关阅读:
    Encryption (hard) CodeForces
    cf 1163D Mysterious Code (字符串, dp)
    AC日记——大整数的因子 openjudge 1.6 13
    AC日记——计算2的N次方 openjudge 1.6 12
    Ac日记——大整数减法 openjudge 1.6 11
    AC日记——大整数加法 openjudge 1.6 10
    AC日记——组合数问题 落谷 P2822 noip2016day2T1
    AC日记——向量点积计算 openjudge 1.6 09
    AC日记——石头剪刀布 openjudge 1.6 08
    AC日记——有趣的跳跃 openjudge 1.6 07
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310982.html
Copyright © 2011-2022 走看看