LEFT JOIN a ON a.label = SUBSTR(b.label,1, length(a.label)) 
上面的这个length影响了速度,我尝试建了函数索引,但是没效果,
把length(a.label)改成数字就快了,因为a.label不是定值,请问有没有上面其它办法?

解决方案 »

  1.   

    你建立一个SUBSTR(b.label,1, length(a.label))函数 索引看看 效果 ?
      

  2.   

    LEFT JOIN a ON b.label like a.label + '%'
      

  3.   

    我试过的,这个一样慢,以前遇到一个问题,类似a.label不是给定值的话索引都会失效的
      

  4.   

    这个肯定的 每次匹配a的label  都会计算其长度 所以时间就在这多花
    a.label的值是规范的 长度是固定的就用数字代替
      

  5.   

    函数索引好像只能包括一个tabel的字段吧
      

  6.   

    先求出最大的长度select max(length(a.label)) from a 不就可以了
      

  7.   


    怎么不可以 呢 
    create index indexname on tableName(SUBSTR(b.label,1, length(a.label)))
    你这里是一个字段啊,你直接运行 下