基本的分析命令
- EXPLAIN
- SHOW CREATE TABLE
- SHOW INDEXES
- SHOW TABLE STATUS
- SHOW STATUS
- SHOW FULL PROCESSLIS
索引
- 单列索引
- 聚合索引
- 覆盖索引
- 局部索引
优化建议
- 删除重复索引。比如有了聚合索引(a,b,c),就不需要单列索引(a)
- 开启慢查询log。
- Limit 1。当只需要一条数据时使用Limit 1。
- 无符号数。其实更多的时候你需要的是无符号数。
- CHAR or VARCHAR。如果字段是不怎么可变的,比如不超过20个字节,那就用CHAR吧。
- ENUM。当需要表示一些状态或者特征码的时候适合用这个。比如订单状态、性别。
- 尽可能的NOT NULL。
- IP地址用无符号INT。
- 删除重复的sql语句。比如查询10个ID的数据,用IN查询,而不要循环去查。
- 重写子查询。连接查询往往比子查询效率更高。
- 缓存。mysql缓存或者在应用层做缓存。
- 避免select *。不必要的网络开销,会使覆盖索引失效。
- 不要 ORDER BY RAND()。
最后
EXPLAIN大法好。