永发信息网

问下这个sql为什么很慢

答案:3  悬赏:10  手机版
解决时间 2021-03-31 17:16
问下这个sql为什么很慢
最佳答案
你最外层的select拿掉,where rownum <= 20 可以直接写在里面(放最前面)

你要把最能排除大量数据的条件写在最后面,从逻辑上面看
(到底哪个条件是最能排除大量数据的条件,要看你的表结构和实际的数据特征)
  and (d.ownercode4 <> e.ownercode4 or d.ownercode3 <> e.ownercode3 or
              d.ownercode2 <> e.ownercode2 or d.ownercode1 <> e.ownercode1 or
              d.extime > cast(e.endtime as date))
 这个条件放在最后面
你自己可以试试,希望对你有帮助
追问现在都是cbo吧,这个放在后面好像没啥效果哦。追答那你可以写成
and (not exists (select 'c' from HDCARD_OFFICIAL_CARD_DETAIL f

where d.ownercode4 = f.ownercode4)
or not exists (select 'c' from HDCARD_OFFICIAL_CARD_DETAIL g

where d.ownercode3 = f.ownercode3)
.........)
这样可以充分利用带索引,如果还是慢,就要调整表的结构,或是数据量太大,自然较慢拉。
全部回答
连着查这么多,能不慢吗追问我是想知道怎么可以优化,除了索引。追答既然你想查这么多,还是连着查,其实,优化也不到哪里去,唯一的办法就是分开查,有个查完再一个,你把这些都写在一起,放在外面都是简单的查询,所以,我觉得没有可优化的
(d.ownercode4 <> e.ownercode4 or d.ownercode3 <> e.ownercode3 or
d.ownercode2 <> e.ownercode2 or d.ownercode1 <> e.ownercode1 or
d.extime > cast(e.endtime as date))
这一段是导致慢的原因, <>和or这2个操作或令你的所有的索引都失效的
这个一个很不好的sql追问那有优化的方法吗,怎样写比较好。追答你需要的是逻辑上的优化,而SQL上的优化对这个逻辑没什么帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
炒菜需要买哪些辅料?
想去杭州玩两天应该怎么安排
34D罩杯和36D罩杯的胸是不是一样大啊
黑珍珠的黑珍珠游戏《武当七侠》
换怠速马达后,怠速高怎么办
祖堂有 白鹿家声远,赤乌世泽长 的对联,是不
巴士陶然丽景北门(人行门)在什么地方啊,我要
求大神解释表面处理的效果:铝阳极氧化处理、
iPhone新机全系降价 什么时候买苹果手机最划
ZL18装载机价格。ZL15装载机价格。ZL10装载机
贴膜,经常听说3M的,不知道怎么质量怎么样
职业规划选择
300吨级船舶抛锚深度
ansys中ensym命令的镜像轴在哪里定义
gps授时设备和北斗授时设备哪个精度高?
推荐资讯
SEO和PPC目前到底该做哪个
已知一个数占总数的百分之几,求总数是多少?
is tom his name?no 什么is not.
既然封建社会重农抑商,为什么还要发行货币?
油菜榨干的那东西叫什么可以养花吗?
WPS软件导致运行电脑运行很慢的原因有哪些?
这样的快板,是什么类的,怎么拿?
吊兰对风水有什么作用
专门研究汉字的工作是什么
泰语小龙怎么写
厦门方之旅旅行社的官网是多少?
大1.5匹的空调制热量5000W相当于多少千瓦的电
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?