12
返回列表 发新帖
楼主: showxz

SQL性能很差,求高人优化

[复制链接]
论坛徽章:
52
IT宝贝
日期:2010-11-04 16:48:222013年新春福章
日期:2013-02-25 14:51:24版主4段
日期:2013-03-09 02:21:03Jeep
日期:2013-12-04 15:37:392014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
11#
发表于 2007-4-29 13:47 | 只看该作者
最初由 abapstones 发布
[B]不要用select...endselect.
直接用select先把数据读到内表里,在关联的时候加上MANDT。
然后用Loop......endloop处理. [/B]


LZ居然用的是SELECT....ENDSELECT.

另外,最好把一个复杂的SQL拆分成几个简单的SQL先放到内表里,然后再用内表循环来处理。

使用道具 举报

回复
论坛徽章:
6
生肖徽章:羊
日期:2007-09-26 17:02:14ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:狗
日期:2008-10-14 10:47:19生肖徽章2007版:牛
日期:2008-10-24 11:04:53生肖徽章2007版:兔
日期:2009-11-16 18:40:362010新春纪念徽章
日期:2010-03-01 11:20:51
12#
 楼主| 发表于 2007-4-29 15:07 | 只看该作者
嗯,谢谢大伙给出的建议。大伙说的都挺有道理的。

还是先把select ... endselect改成去一张内表。

然后再做loop

使用道具 举报

回复
论坛徽章:
10
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:猪
日期:2008-11-19 12:55:31奥运会纪念徽章:足球
日期:2008-10-24 13:28:14生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:532009日食纪念
日期:2009-07-22 09:30:00
13#
发表于 2007-4-30 11:43 | 只看该作者
用st05追踪一下,看看哪里是瓶颈。

使用道具 举报

回复
论坛徽章:
0
14#
发表于 2007-5-9 23:00 | 只看该作者

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2007-5-9 23:07 | 只看该作者
问题很多:
1.and vbrk~ERDAT >= t_from "限定了时间段
and vbrk~ERDAT <= t_to
换 成 between .
2.如果有可能,不要放到structure
3.如果有可能,第二三的sql完全可以合并,
4.如果有可能所有sql可以合并,
5.如果可能重用,创建一个视图,再加上视图buffer
6.建立索引,.......

使用道具 举报

回复
论坛徽章:
6
生肖徽章:羊
日期:2007-09-26 17:02:14ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:狗
日期:2008-10-14 10:47:19生肖徽章2007版:牛
日期:2008-10-24 11:04:53生肖徽章2007版:兔
日期:2009-11-16 18:40:362010新春纪念徽章
日期:2010-03-01 11:20:51
16#
 楼主| 发表于 2007-5-11 12:58 | 只看该作者
最初由 0427404041 发布
[B]问题很多:
1.and vbrk~ERDAT >= t_from "限定了时间段
and vbrk~ERDAT <= t_to
换 成 between .
2.如果有可能,不要放到structure
3.如果有可能,第二三的sql完全可以合并,
4.如果有可能所有sql可以合并,
5.如果可能重用,创建一个视图,再加上视图buffer
6.建立索引,....... [/B]


谢谢你回复,

1. 用between和用两个and哪个效率高一点,因为我之前写PL/SQL很多, 个人以为用两个and在执行起来效率更高一点. 但在ABAP里我就不知道了.

2.如果不放到到structure里,是不是要放到header line里?

3.不太清楚你说的合并,是不是用一个内连接后取值.

4.如果有可能所有sql都可以合并,那就连接多少张表?而且做内连接表的效率是很低的(个人感觉)

5.不会建VIEW.

6.在哪里建index?

非常感觉你的关注

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表