几种特殊情况(使用带索引的字段查询时,索引不起作用)
使用Like关键字,如果匹配字符串的第一个字符为"%",索引不会起作用,如果第一个关键字不是 "%",那么索引会起作用....MySQL可以为多个字段创建索引,一个索引可以包括16个字段,只有查询条件中使用这些字段中的第一个字段时,索引才会被使用.
查询关键字只有 OR ,且OR左右两边的列都是索引时,索引才起作用....优化子查询
子查询虽然可以使查询语句更灵活,但执行效率不高.因为MySQL需要为内层查询语句的查询结果建立一个临时表.
可以使用连接查询代替子查询,连接查询不需要建立临时表,其速度比子查询要快....这样做的好处有:
让缓存更高效. 对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用了.而分解后的多个查询,即使其中一个表的查询发生变化,那么对于其他表的查询缓存依然可以使用....分解成单表查询,这些单表查询的缓存结果更可能被其他查询使用到,从而减少冗余记录的查询.
减少锁竞争.
在应用层进行连接,可以更容易的对数据库进行拆分,从而更容易做到高性能和可伸缩.