SQL优化问题

1. 索引

   普通索引(key) : 对关键字没有要求

   唯一索引(unique): 要求记录提供的关键字不能重复

   主键索引(primary key): 要求关键字唯一且不为null

    全文索引(fulltext key): 不支持中文类型

2.  执行计划explain(人为主动分析)

可以通过 explain select 来分析sql语句执行前的执行计划

3. 慢查询日志

show variables like 'slov_query_log' 查看是否开启

OFF 为关

ON 为开

set GLOBAL slow_query_log = on 来开启

他会在datadir下产生一个xxx-slow.log 的文件

show VARIABLES like 'long_query_time' 查看设置临界时间

4. 配置项等

show variables like 'profiling'; 查看profile信息

开启后 所有的SQL执行的详细信息会被自动记录下来

可以去查看sql执行经过了那些步骤, 消耗多少时间

5. 查询缓存 

  1. 开启查询缓存

  2. windows 上是my.ini linux上是 my.conf

  3. 在[mysqld]段中配置query_cache_type

    0: 表示不开启

    1: 开启,默认缓存所有, 需要在sql语句中增加select sql-no-cache提示来放弃缓存

    2: 不开启, 默认都不缓存, 需要在sql语句中增加select sql-cache来主动缓存(==常用==)

    更改配置后需要重启是配置生效, 重启可以通过show variables like 'query_cache_type'来查看

  4. 设置缓存大小

    set global query_cache_size= 64* 1024* 1024;

  5. 将查询缓存

  6. select sql_cache* from table;

    缓存失效问题

    当数据表改动时, 基于该数据表的任何缓存都会被删除. (表层面的管理, 不是记录层面的管理, 因此失效率较高)

6. 分区(了解)

创建的表对应一组存储文件, 使用MyISAM存储引擎时是一个.MYI 和 .MYD文件

使用innodb引擎时是一个 .ibd 和 .frm(表结构文件)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值