怎样加快like 的速度?

u012336634 2013-10-07 03:50:50
20~30张表,每张表50~60万行记录,表结构都相同。其中有4个字段,假设是a1,a2,a3,a4,类型都是nvarchar(30)。

我的问题是:

select * from table1 where a1 like '%str%' or a2 like %str%' or a3 like %str% or a4 like %str% union all
select * from table2 where a1 like '%str%' or a2 like %str%' or a3 like %str% or a4 like %str% union all
select * from table3 where a1 like '%str%' or a2 like %str%' or a3 like %str% or a4 like %str% union all
.........
select * from table30 where a1 like '%str%' or a2 like %str%' or a3 like %str% or a4 like %str%

str: 一个给定的字符串

怎样利用索引或者其它方法加快查询速度?
...全文
214 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
不知道动态拼接SQL的效率怎么样.可以试试用SYSCOLUMNS表来读取表名
如果是用这个这么优化?能写出语句来看看吗?
發糞塗牆 2013-10-08
  • 打赏
  • 举报
回复
引用 8 楼 gioh0022 的回复:
[quote=引用 6 楼 DBA_Huangzj 的回复:] 我相信你这种查询即使是ORALCE也没办法加快多少。
oracle函数索引substr()呢[/quote]sqlserver也有全文索引,但是效果都不如意,就像各大搜索引擎,基本上都是自己开发的数据库,而弃用现有的产品,这也表明对于某些查询,并不是总有方法可以优化的
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
我相信你这种查询即使是ORALCE也没办法加快多少。
oracle函数索引substr()呢
發糞塗牆 2013-10-07
  • 打赏
  • 举报
回复
我相信你这种查询即使是ORALCE也没办法加快多少。
u012336634 2013-10-07
  • 打赏
  • 举报
回复
这么说SQL Server里是没有什么方法可以加快速度了?
苦逼的程序员 2013-10-07
  • 打赏
  • 举报
回复
语句没啥好改的。。写个视图放一起,加个区别列一起查询吧。。也快不了多少
--小F-- 2013-10-07
  • 打赏
  • 举报
回复
写错 是sysobjects表
--小F-- 2013-10-07
  • 打赏
  • 举报
回复
不知道动态拼接SQL的效率怎么样.可以试试用SYSCOLUMNS表来读取表名
發糞塗牆 2013-10-07
  • 打赏
  • 举报
回复
这种需求下我觉得你用全文索引或者第三方软件来完成全文搜索更好,这中脚本没什么优化的空间了

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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