楼主: muyu208

帮忙优化下SQL语句.

[复制链接]
论坛徽章:
4
ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022011新春纪念徽章
日期:2011-01-12 11:41:59ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:26
 楼主| 发表于 2011-12-1 17:40 | 显示全部楼层
本帖最后由 muyu208 于 2011-12-1 17:44 编辑
lucky_sunny 发表于 2011-12-1 17:36
你判断的是在订单范围外?一般如果是范围内的话,应该是大于等于startno,小于等于endno


语句是这样的:
select * from TEST.TAB_BILL_PROVIDE where  START_NO<='205013935880' and END_NO>='205013935980';

查询出来的结果:
START_NO        END_NO            PROVIDE_SITE
205013900001  205013950000      总公司
205013935001  205013936000      常州

使用道具 举报

回复
论坛徽章:
9
2012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-07 09:59:35茶鸡蛋
日期:2012-02-16 14:26:00ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-22 17:29:07优秀写手
日期:2014-03-20 06:00:36慢羊羊
日期:2015-03-04 14:19:442015年新春福章
日期:2015-03-06 11:57:31
发表于 2011-12-1 17:51 | 显示全部楼层
START_NO  和 END_NO分别是什么意思?这个表每一行是什么意思?

使用道具 举报

回复
论坛徽章:
4
ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022011新春纪念徽章
日期:2011-01-12 11:41:59ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:26
 楼主| 发表于 2011-12-1 17:57 | 显示全部楼层
lucky_sunny 发表于 2011-12-1 17:51
START_NO  和 END_NO分别是什么意思?这个表每一行是什么意思?

可能刚才描述有点问题,重新描述下:
比如说公司开了10000个单号,这些单号不是一次性发放下去的,而是一批一批的发放,比如A领取1000,B领取2000个单号.以后这个单号出问题就能查到这个单号是哪里领取的.

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:542013年新春福章
日期:2013-02-25 14:51:24
发表于 2011-12-1 17:58 | 显示全部楼层
create index (START_NO desc,END_NO)  然后收集柱状图,在看看吧

使用道具 举报

回复
论坛徽章:
4
ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022011新春纪念徽章
日期:2011-01-12 11:41:59ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:26
 楼主| 发表于 2011-12-1 18:07 | 显示全部楼层
ahf000 发表于 2011-12-1 17:58
create index (START_NO desc,END_NO)  然后收集柱状图,在看看吧

柱状图怎么收集的?
这样创建后,快了很多,资源也消耗少一些了
执行计划
----------------------------------------------------------
Plan hash value: 3085003339

--------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name               | Rows  | Bytes | Cost(%CPU)| Time     |
--------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                    |   305K|    34M|  2640   (1)| 00:00:32 |
|   1 |  TABLE ACCESS BY INDEX ROWID| TAB_BILL_PROVIDE   |   305K|    34M|  2640   (1)| 00:00:32 |
|*  2 |   INDEX RANGE SCAN          | TAB_BILL_PROVIDE_I |  2983 |       |    99   (2)| 00:00:02 |
--------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access(SYS_OP_DESCEND("START_NO")>=HEXTORAW('CDCFCACFCECCC6CCCAC7C7CFFF')
  AND
              "END_NO">='205013935980' AND SYS_OP_DESCEND("START_NO") IS NOT NUL
L)
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("START_NO"))<='205013935880' AND
              "END_NO">='205013935980')


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       3951  consistent gets
       3943  physical reads
          0  redo size
       1566  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          2  rows processed

使用道具 举报

回复
论坛徽章:
4
ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022011新春纪念徽章
日期:2011-01-12 11:41:59ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:26
 楼主| 发表于 2011-12-1 18:07 | 显示全部楼层
本帖最后由 muyu208 于 2011-12-1 18:10 编辑
ahf000 发表于 2011-12-1 17:58
create index (START_NO desc,END_NO)  然后收集柱状图,在看看吧
发重复了


使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:542013年新春福章
日期:2013-02-25 14:51:24
发表于 2011-12-1 20:23 | 显示全部楼层
muyu208 发表于 2011-12-1 18:07
柱状图怎么收集的?
这样创建后,快了很多,资源也消耗少一些了
执行计划

看你执行计划,感觉你统计信息不准确,收集直方图是for columns xx size 数字

使用道具 举报

回复
论坛徽章:
9
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2013-03-06 17:43:59鲜花蛋
日期:2013-04-26 22:57:09蛋疼蛋
日期:2013-06-05 15:38:56林肯
日期:2013-08-16 16:46:322015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
发表于 2011-12-1 20:35 | 显示全部楼层
索引也可以建成 reverse的。而且确实是数据类型有点问题,你换成number 的不行?

使用道具 举报

回复
论坛徽章:
5
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51数据库板块每日发贴之星
日期:2011-07-22 01:01:02蜘蛛蛋
日期:2011-08-24 14:10:13ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:54:26
发表于 2011-12-1 20:37 | 显示全部楼层
那2列改成NUMBER的, varchar2 也来 >= 坑爹哦 你们 数据库设计的人真牛逼

使用道具 举报

回复
论坛徽章:
0
发表于 2011-12-1 20:52 | 显示全部楼层
估计你的统计信息太旧了,建个索引,然后指定hint,再看看执行计划

使用道具 举报

回复

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

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年6月4日~6日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


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