最新准备把数据库从ACCESS转换到MYSQL,结果发现同样一个查询,MYSQL的速度简直无法接受。
MYSQL查询用Navicat for MySQL执行查询语句ACCESS几乎没有延迟就查询出来了,而MYSQL却要90多秒。下面是查询的语句,记录一共有2万7千多条。
SELECT * FROM myorder m left JOIN ordersamp o ON m.od_sn = o.od_sn where m.o_state>=150 and year(m.o_date1)=2010
这样的结果是怎么回事啊?难道左关联是MYSQL的弱项?

解决方案 »

  1.   

    建了索引之后,MySQL大多数情况下比Access要快得多。检查一下哪些列没建索引吧,先。
      

  2.   

    SHOW INDEX FROM tbl_name 
      

  3.   

    由于是直接从ACCESS导入的数据,2个表都只以ID作KEY值,没有建立索引。ACCESS数据库里也没建索引。
      

  4.   

    应该是合适的索引没有创建提供以下检查结果。show index from myorder;
    show index from ordersamp;
    explain 
    SELECT * 
    FROM myorder m left JOIN ordersamp o 
    ON m.od_sn = o.od_sn 
    where m.o_state>=150 
    and year(m.o_date1)=2010;
      

  5.   

    可能性不大。 建议你上传一下你的ACCESS数据库MDB文件。可以将其中无关的表和记录删除。仅留下表结构以供分析就可以了。可以上传到 http://www.access911.net/csdn
      

  6.   

    你的MYSQL在单机还是网络、日志打开没有
      

  7.   

    给myorder的od_sn和ordersamp的od_sn建立索引后,速度接近access了我看了access的myorder确实有id的索引和user_id的索引
    ordersamp有id和s_no的索引
      

  8.   

    2万数据要90多秒?如果MYSQL做成这样,那早就关门了。