为什么我这条语句查询速度是30多秒啊?
SELECT  a.filename,b.cn  FROM  a left join b on a.cn=b.cn  where a.filename like 'mod-j2me%'  and b.branch = 'shanxi_release' limit 10;
a表记录500000+,b表记录260000+,每天在增加。怎么办?
各位大侠,分不多,要多帮忙啊!

解决方案 »

  1.   

    a.filename和b.branch分别建立索引alter table a add index(filename);
    alter table b add index(branch);
      

  2.   

    a:cn filename上建立复合索引
    b:branch
      

  3.   

    创建 a(filename) 索引 即可。贴一下你的 explain SELECT  a.filename,b.cn  FROM  a left jo ...
      

  4.   

    可以贴一下执行计划explain SELECT  a.filename,b.cn  FROM  a 
    left join b on a.cn=b.cn  where a.filename like 'mod-j2me%'  and b.branch = 'shanxi_release' limit 10;
    分别filename和branch分别加索引。
      

  5.   

    explain SELECT a.filename,b.cn FROM a 
    left join b on a.cn=b.cn where a.filename like 'mod-j2me%' and b.branch = 'shanxi_release' limit 10;把表结构发下 
      

  6.   


    执行一下
    create index idx_cn_filename on a(cn,filename)
    create index idx_cn_branch on a(cn,branch)看看 
      

  7.   

    where子句里把like子句放后边会好点,like是要遍历表的,而另一个条件可以先除掉一部分数据
      

  8.   

    看你每天数据的增长量,预估A表数据不大于1KW,把b.branch在A表中做冗余列,建立联合索引(..., b.branch,a.filename, ...)
      

  9.   

    create index idx_cn_branch on a(cn,branch)写错了
    create index idx_cn_branch on b(cn,branch)