数据库 两个简单实用的表级优化方法
analyze table 表名; //分析和存储表的关键字分布
check table 表名; //检查一个或多个表是否有错误
optimize table 表名; //如果含有可变长度行的表如果进行了很多更改,则会出现比较多碎片。
索引不能使用的原因:
(1)以%开头的LIKE查询不能够利用B-Tree索引 : select * from actor where last_name like '%NI%' 应(select * from (select actor_id from actor where last_name like '%NI%')a, actor b where a.actor_id=b.actor_id)
(2)数据类型出现隐式转换 :select from actor where last_name = 1 应('1')
(3)复合索引情况下,假如查询条件不包含索引列最左边部分,即不满足最左原则
(4)如果Mysql估计使用索引比全表扫描慢,则不适用索引。
(5)用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。