MySQL优化¶
单表优化¶
字段¶
- 尽量使用
TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED - 尽量使用
TIMESTAMP而非DATETIME - 避免使用NULL字段,很难查询优化且占用额外索引空间
- 用整型来存IP
索引¶
- 针对性的创建索引,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描
- 尽量避免在
WHERE子句中对字段进行NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描 - 字符字段只建前缀索引
查询¶
- 不用
SELECT * OR改写成IN:OR的效率是n级别,IN的效率是log(n)级别,in的个数建议控制在200以内- 连续数值,使用
BETWEEN不用 IN