日期:2014-05-17  浏览次数:20511 次

多列模糊查询 性能如何提升
我有一数据表里面字段有15个, 其中 userid, name ,callsign,cnName,IMO 要作模糊查询, 用户输入一个查询条件,  这五项都要进行模糊匹配

    
SELECT userid, name ,callsign,cnName,IMO FROM TBInfo where userid like 'liy%' or namelike 'liy%' or callsignlike 'liy%'  or cnName like 'liy%' or IMO like 'liy%'


  表中数据有150W,现在这样查询一次获得结果要7秒钟, 

  如果改进才能使用查询速度在1秒以内完成。



    原想  将表平均分到四个数据库里 DB0,DB1,DB2,DB3  查询时使用 Union 来查询,时间反而更长了


   
------解决方案--------------------
建了索引吗
建了索引吗
------解决方案--------------------
楼主的SQL是不是有点问题啊
这几个条件不应该是or的关系吧,换成and,这样才有意义啊,几个条件才能同时起作用

SELECT userid, name ,callsign,cnName,IMO FROM TBInfo where userid like 'liy%' and namelike 'liy%' and callsignlike 'liy%'  and cnName like 'liy%' and IMO like 'liy%'

------解决方案--------------------
对做条件的字段建索引