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. 查询缓存
-
开启查询缓存
-
windows 上是my.ini linux上是 my.conf
-
在[mysqld]段中配置query_cache_type
0: 表示不开启
1: 开启,默认缓存所有, 需要在sql语句中增加select sql-no-cache提示来放弃缓存
2: 不开启, 默认都不缓存, 需要在sql语句中增加select sql-cache来主动缓存(==常用==)
更改配置后需要重启是配置生效, 重启可以通过show variables like 'query_cache_type'来查看
-
设置缓存大小
set global query_cache_size= 64* 1024* 1024;
-
将查询缓存
-
select sql_cache* from table;
缓存失效问题
当数据表改动时, 基于该数据表的任何缓存都会被删除. (表层面的管理, 不是记录层面的管理, 因此失效率较高)
6. 分区(了解)
创建的表对应一组存储文件, 使用MyISAM存储引擎时是一个.MYI 和 .MYD文件
使用innodb引擎时是一个 .ibd 和 .frm(表结构文件)