以前用的是mysql6.0.5版本,现在改用mysql5.7.20,同样的数据库,6.0.5版本电脑重启后某个查询约1-2秒,但用5.7.20版本同样的数据库作同样的查询需约12秒左右(第二次查询速度很快),请问是什么原因?

解决方案 »

  1.   

    多表查询,查询语句很简单:select jgh,mc,b.je,b.yz from table1 a,(select jgh,je,yz from table2) b  where a.jgh=b.jgh,电脑重启后首次查询5.7.20比6.0.05慢很多,第二次查询都很快,版本问题?
      

  2.   

    贴出EXPLAIN ,贴出SHOW CREATE TABLE以供分析。
      

  3.   

    查询:SELECT a.kph,pzh,lx,dw,xh,xcgzj,djrq,bxrq,dqrq,b.yz,b.jz FROM clmx a,(SELECT yz,jz,kph FROM gdzc WHERE sjrq = '2018-01-31' AND zczt='正常') b WHERE a.kph=b.kph
    mysql6.0.5EXPLAIN:id select_type table type possible_keys key key_len ref rows Extra
    1 PRIMARY a ALL \N \N \N \N 65
    1 PRIMARY <derived2> ALL \N \N \N \N 5988 Using where; Using join buffer
    2 DERIVED gdzc ref sjrq sjrq 4 15943 Using where
    mysql5.7.20EXPLAIN:id select_type table partitions type possible_keys key key_len ref rows filtered Extra
    1 SIMPLE a \N ALL PRIMARY \N \N \N 65 100 \N
    1 SIMPLE gdzc \N ref sjrq,kph kph 23 gdzc.a.kph 10 1.36 Using where
      

  4.   

    贴出SHOW CREATE TABLE以供分析。
    贴出SHOW index from 以供分析。
    楼主最好一次把需要的分析信息贴出,否则一点点儿挤牙膏太麻烦了。
      

  5.   

    大致原因找到了,gdzc表中kph,sjrq原建立两个单独索引,现改为复合索引后查询速度由13秒提快到0.037秒,把原表也改为复合索引后查询时间为0.002秒,老版本还是效率高些。