Mysql的几种搜索FullText、Instr、Like

来源:互联网 发布:淘宝助理没有销售属性 编辑:程序博客网 时间:2024/05/22 15:56
使用全文搜索,要把数据库引擎设置为myisam,该引擎不支持事务处理,设置完还要把要搜索的列设置fulltext索引,效率上全文搜索据说最高,是在数据量达到几百万的时候,但是全文搜索使用模糊查询效率又很低,还不如like,且全文搜索不支持中文;

instr效率比like要好,我测的结果是instr效率在数据量三百万的时候比like稍微快几十毫秒,如果对搜索的列创建index,那么instr和like的效率都提高两倍还多,所以还是建索引效果明显;

综上,当使用模糊查询时,第一要建索引;第二,用instr替换like。

instr(str1,str2)
有两种用法:一种是前面参数写变量,后面写列名;还有就是位置调换。两种有不同的效果,instr(str1,str2)的意思是str2在str1中,如果后面写变量前面写列名,则表示搜出表中所有str1列中值包含str2变量的数据,这时候跟(列名   like  '目标表里')的效果是一样的;
instr还有一个需要注意的地方,就是对该函数返回结果值的判断,不写时默认是判断 "> 0";共有三种可能,每种对应情况如下:
----------------------
instr(title,'name')>0  相当于  title like '%name%' 

instr(title,'name')=1  相当于  title like 'name%' 

instr(title,'name')=0  相当于  title not like '%name%' 
0 0
原创粉丝点击