进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来
一般情况下like模糊查询的写法为(field已建立索引):
SELECT `column` FROM `table` WHERE `field` like '%keyword%';
上面的语句用explain解释来看,SQL语句并未用到索引,而且是全表搜索,如果在数据量超大的时候,效率会很低。
其它方法:不匹配NULL ( 可这样匹配到NULL:where INSTR(ifnull(f.who,''), '') and INSTR(ifnull(f.positions,''), '') )
法1:LOCATE(“匹配值”,字段)方法
select deviceid from applications where locate('QQ',vendor);
法2:instr(字段,“匹配值”) INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);
select *from applications where instr (filename,'QQ.e');