usera表有数据大概20万条,count表大概有50万条.
useranme都有索引.现在要执行一条update语句:UPDATE usera,count SET usera.Age = count.Ct WHERE usera.username = count.username;大概20秒左右可执行完成.但是当执行下边语句时,UPDATE usera,count SET usera.Age = count.Ct WHERE binary usera.username = binary count.username;执行了半个小时都还没有完成.请大虾帮助分析一下,为什么加了binary,在执行效率上有如此大的区别?第一条不能区别大小写,现在想把username的大小写都区别开,请问有没有更好的,效率更高的语句?

解决方案 »

  1.   

    加了 binary后,username 的索引就失效了。
      

  2.   

    是啊,加了 binary后 索引失效。能否把 username 字段直接改为 binary 类型的呢?而不是varchar类型的。
      

  3.   

    因为 varchar类型的字段 要转换为 binary字段类型的,同时放弃索引的使用。
    但是,如果直接是binary字段类型的,再加上索引的话,就可以了。
    但有一个缺陷,就是,如果楼主想不区分大小写的时候,就又不能用索引了。
    看实际需求吧。
    实在不行,就建立一个 varchar类型的,再建一个binary类型的。具体用哪个看需求而定。一切楼主随意吧。