一个关于针对多个关键字搜索语句的执行效率问题

泡泡鱼_ 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
...全文
189 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是丁学 2007-04-12
  • 打赏
  • 举报
回复
这种情况一般都是建立单独的索引文件,直接在数据库中找会累死人的

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧