[请高手指点]如何优化这个查询SQL语句?(分不够再加)

onroll 2004-10-21 03:58:50
在一个庞大的产品数据库里根据规格型号检索数据,
我用了这样一个规格型号的检索:

用户录入的关键字:S500 ED30 220M CHINA 800
(规格型号的关键参数可能不是正常排序或完整)
应该查到的正确结果:
S50034 220MB SED30CHINA 80065 SD
......

产生的SQL语句如下:
select * from [表] where typemark like '%S500%' and typemark like '%ED30%' and typemark like '%220M%' and typemark like '%CHINA%' and typemark like '%800%'

但是产品库越来越庞大,这样的语句效率越来越低
哪一位老兄不吝赐教,给小弟一个更有效、更快的搜索办法??
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2004-12-08
  • 打赏
  • 举报
回复
你的查询子句的每一个条件都利用不上索引,
对此,查询处理器只能进行表扫描,然后对每一行进行对比,这种查询效率是最慢的了
vinsonshen 2004-12-08
  • 打赏
  • 举报
回复
那么多模糊like查询而且还and? 模糊like查询是利用不上索引的~~~所以楼主你数据表很大时,速度会比较慢啊
onroll 2004-12-08
  • 打赏
  • 举报
回复
难道没有好的办法吗
pbsql 2004-10-21
  • 打赏
  • 举报
回复
基本上,这样的查询是很难提高效率的,因为用不上索引,除非把typemark再系分一下
软件钢琴师 2004-10-21
  • 打赏
  • 举报
回复
select * from [表] where typemark like '%S500%ED30%220M%CHINA%800%'
Andy__Huang 2004-10-21
  • 打赏
  • 举报
回复
你試比較這兩種

select * from [表] where typemark like '%S500%' or typemark like '%ED30%' or typemark like '%220M%' or typemark like '%CHINA%' or typemark like '%800%'

select * from [表] where charindex('S500',typemark)>0 or charindex('ED30',typemark)>0 or charindex('220M',typemark)>0 or charindex('CHINA',typemark)>0 or charindex('800',typemark)>0

Andy__Huang 2004-10-21
  • 打赏
  • 举报
回复
應該用or連接吧﹖

34,873

社区成员

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

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