分析查询语句
1)explain [extended] select select_options
2)describe(可以简写为desc) select select_options
查看表的信息[show create table 表名]
什么时候索引没用
1)用like查询且%在开头
2)多列索引直接用第二个字段来查询,索引不起作用
例如:create index index_id_price on fruits(f_id,f_price);
explain select * from fruits where f_price=5.2;
这条select 语句中索引不起作用。
3)使用or关键字的查询语句前后不是索引列时
优化子查询:
子查询的效率不高,用连接(join)查询+索引来替代子查询
优化数据库结构
1)将字段很多的表分解成多个表:将常用的字段分离出来成为新表
2)增加中间表:适用于经常需要联合查询的表
3)合理增加冗余字段:
4)优化插入记录的速度:采用批量插入,使用load data infile 批量导入,插入时禁用索引(set改参数的值就行了),插入前禁用唯一性检查
分析表:analyze table 表名,分析期间加了只读的锁
检查表:check table 表名,检查期间加了只读的锁
优化表:optimize table 表名,优化碎片,优化期间加上只读的锁
优化服务器:
优化参数:详见show variables那里的解释,记得配置后重启mysql服务
原文地址:http://10170308.blog.51cto.com/10160308/1666052