您的位置:首页 > 数据库 > MySQL

Mysql的几种搜索FullText、Instr、Like

2014-09-11 15:15 357 查看
使用全文搜索,要把数据库引擎设置为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%' 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库