已经指定了强制索引,以及表结合方式,按理说mysql应该没有必要再进行optimize这一步了。
high performance mysql里说,statistics是检查存储引擎以及优化语句的步骤,
常常发现有些查询语句statistics这一步占用了太多时间,有时会发现这一步骤会只有6,7秒之久,这是为什么? 能避免吗?

解决方案 »

  1.   

    没办法,你给出的FORCE INDEX其实只是给了MYSQL一个HINT,MYSQL还是要对其它部分进行优化的。
      

  2.   


    比如:SELECT * FROM `tbl` force index(indx)
    WHERE  rid =27 and rel > 1001 and name='xiaolu' 
    AND  id IN (SELECT id FROM `tbl` force index(indx) WHERE rid = 41)  AND  id IN 
           ( SELECT  id FROM  `tbl` force index(indx) WHERE  rid =26 and rel > 1001 and name='xiaozhao')  
         )
    ORDER BY  id DESC LIMIT 0 , 8
    子查询里有子查询,如果改成联合查询,并且除了force index外指定straight join是不是就不用optimization这一步骤了?
      

  3.   

    optimize 这一步不仅是进行索引的选择,还有许多其它的项目进行优化。