一个关于针对多个关键字搜索语句的执行效率问题
泡泡鱼_ 2007-04-12 02:19:03 表名:t
要查询的字段名:f
关键字规则:多个关键字用空格分开,比如“一 二 三 四”则是要查询表t中字段f分别包含有一,二,三,四的记录
我之前是用
select * from t where f like '%一%' or f like '%二%' or f like '%三%' or f like '%四%' 如果还有其他关键字的话则以此类推
但这种方式效率太低了,我才十万不到的数据里面检索,居然要一分多种,当然这是指在网站中使用搜索功能,其中加上了页面加载消耗的时间,以及生成:f like '%一%' or f like '%二%' or f like '%三%' or f like '%四%'这个查询条件的时间
但是居然要那么长时间,也太夸张了!要申明的是,如果只搜索一个关键字的话,页面加载是很快的,就算加上了页面消耗的时间之类的,也会在两秒左右打开
请问各位:有更好的办法吗?我试过的办法有:charindex,也不理想,感觉没区别
用union all却有重复记录,想不用all去除重复记录吧,但查询到的字段中有个ntext类型的,不能去掉这个all