Mysql查询优化器
在多种情况下,可能会导致查询结果从缓存中清除,例如:.
数据可能已被修改
您可能运行了一条语句,其文本与缓存的语句略有不同(小写/大写,换行符,...)
缓存可能已达到其大小限制之一(内存,查询计数,块等),并决定逐出您的特定查询
高速缓存碎片过多,即使某些内存仍然可用,也会强制高速缓存修剪查询
等等...
mysql的缓存随时都有可能清空,长时间的sql还是会有 问题,这时候就会在对查询做优化
Mysql的查询优化器会优先查询缓存,若缓存没有命中,再去解析SQL,查询优化器还会优化SQL,即使where条件中的等值查询条件按照索引的顺序进行排序。
1.不在索引列上做任何操作
如果查询的列不是独立的,Mysql就不会走索引,不是独立的列是指索引的列不能是表达式或者是函数的参数。
例:索引中使用表达式,Mysql走的是全表扫描