为什么第一次启动 mysqld.exe
运行某个sql语句,速度很慢,再次运行,就速度飞快。再关掉mysqld.exe, 重新开mysqld.exe
还是执行同一个sql语句,速度还是一样慢!!请教如何解决,什么问题?谢谢!

解决方案 »

  1.   

    运行某个sql语句,速度很慢,再次运行,就速度飞快。
    基本上所有的数据库系统都会使用缓存, 即在第一次执行SQL语句后,数据会仍然放在内存中,当第二次查询相同SQL语句的时候会直接使用内存中的数据。
      

  2.   

    从硬盘到内存缓存,开始从硬盘中读取数据速度会慢,把读取的sql语句
    缓存到内存里,第二次在读取时候是从内存中缓存读取速度就会很快的。
      

  3.   

    如果楼主希望别人帮助,则必须贴出自己的SQL语句和 explain select ..结果以供分析。
      

  4.   

    EXPLAIN
    SELECT z2.empAutoId,z2.employeeName,servicePrice price FROM (        SELECT SUM(ServiceTurnover) servicePrice,a1.empAutoId FROM billEmpBonus a1
            STRAIGHT_JOIN BusinessBill  a2 ON a1.billAutoId=a2.billAutoId
            WHERE a2.endDate IS NOT NULL AND a2.beginDate>='2012-06-01' AND a2.beginDate<'2012-07-01' 
            AND a1.worktype IN (2,3,4) AND a1.ServiceTurnover>0
            GROUP BY a1.empAutoId
    ) z1 LEFT JOIN 
    (SELECT b.empAutoId,c.employeeName FROM TypeOfWork a 
     LEFT JOIN TypeOfWorkEmployee b ON a.TypeOfWorkAutoId=b.TypeOfWorkAutoId 
    JOIN Employee c ON b.empAutoId=c.empAutoId
     
     
    ) z2 ON z1.empAutoId=z2.empAutoId
    WHERE z2.empAutoId IS NOT NULL
    GROUP BY z2.empAutoId,z2.employeeName;
      

  5.   

    billEmpBonus a1  12万行数据
    BusinessBill  a2 6万