多like的SQL语句优化

select*fromtablewherefacctcode='233[深圳]'andfacctattrlike'投资%'andfacctattrnotlike'%溢折价... select * from table where facctcode = '233[深圳]'
and facctattr like '投资%'
and facctattr not like '%溢折价%'
and facctattr not like '%估值增值%'
请问这种语句有办法优化么,因为数据库方面用的有sqlserver,oracle,db2
所以尽量使用sql的标准语法,不要用专用的聚合函数等
展开
 我来答
micro0369
推荐于2018-04-05 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4051万
展开全部
  1. facctcode = '233[深圳]'    可以使用索引,建立索引

  2. facctattr like '投资%'        可以使用索引,建立索引

  3. facctattr not like '%溢折价%'   无法使用索引

  4. facctattr not like '%估值增值%'  无法使用索引

也就是说,可以对 列   facctcode  和  facctattr  分别建立索引

ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
xuezxj
2013-07-24 · TA获得超过1683个赞
知道小有建树答主
回答量:1728
采纳率:100%
帮助的人:704万
展开全部
select * from table ---不要用* ,用列名,用哪列查那个
where facctcode = '233[深圳]' ---- 可以使用索引,建立索引
and facctattr like '投资%' ------使用索引,建立索引
and facctattr not like '%溢折价%'
and facctattr not like '%估值增值%'
---加时间条件,如果不是全表查询的话,加时间
and (time>'' and time<'' ) --最好是加括号,这样会先执行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
德访0E
2013-07-24 · TA获得超过1451个赞
知道小有建树答主
回答量:1398
采纳率:0%
帮助的人:1087万
展开全部
与其研究 LIKE '%' 的优化方法不如在可能的范围内调整你数据库结构。结构设计上的重大缺陷没办法用优化语句弥补
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式