查看: 5057|回复: 8

oracle 分区表查询问题

[复制链接]
论坛徽章:
6
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:排球
日期:2008-10-24 13:30:01生肖徽章2007版:狗
日期:2009-06-16 16:00:282009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:虎
日期:2009-08-03 11:42:32ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52
跳转到指定楼层
1#
发表于 2008-6-16 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有2种查询方式
select * from t partition(p1);
select * from t where t.parttition_cd=1

p1分区和 t.parttition_cd=1 就是同一个分区

在plsql dev下
查看执行计划,两个写法cost一样,但是cardinality不一样,
select * from t partition(p1);
下的cardinality
约是
select * from t where t.parttition_cd=1
下的100倍。
我不知道cardinality有什么知道意义,请高手指点一下,用那种方法好,谢谢。
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
2#
发表于 2008-6-16 17:18 | 只看该作者
select * from t partition(p1);
select * from t where t.parttition_cd=1
 
这是两种不同的表达方式,而且表达的意思也不同啊
 P1 分区和PARTITION_CD=1 等价?

使用道具 举报

回复
论坛徽章:
9607
土豪章
日期:2013-12-31 14:11:39土豪章
日期:2013-12-31 14:11:39阿森纳
日期:2013-06-03 17:00:31阿森纳
日期:2013-10-11 09:27:58法拉利
日期:2013-12-27 15:20:30林肯
日期:2013-12-27 15:19:09法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30
3#
发表于 2008-6-16 17:22 | 只看该作者
不懂,学习中

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:排球
日期:2008-10-24 13:30:01生肖徽章2007版:狗
日期:2009-06-16 16:00:282009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:虎
日期:2009-08-03 11:42:32ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52
4#
 楼主| 发表于 2008-6-16 17:25 | 只看该作者
原帖由 wangfans 于 2008-6-16 17:18 发表
select * from t partition(p1);
select * from t where t.parttition_cd=1
 
这是两种不同的表达方式,而且表达的意思也不同啊
 P1 分区和PARTITION_CD=1 等价?


我的意思是内容等价

就是说我的分区p1是依据字段PARTITION_CD来分区的。
partition P1 values less than ('2');
PARTITION_CD 这个字段放的都是 自然数,1,2,3 啥的。

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:排球
日期:2008-10-24 13:30:01生肖徽章2007版:狗
日期:2009-06-16 16:00:282009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:虎
日期:2009-08-03 11:42:32ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52
5#
 楼主| 发表于 2008-6-16 17:26 | 只看该作者
补充一下,2个方式的 方式也完全一样,都是全表扫描。

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
6#
发表于 2008-6-16 18:01 | 只看该作者
不可能一样的,除非你表的数据都在p1这个分区里~~~

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:鼠
日期:2007-11-28 15:47:16辩论纪念章
日期:2010-11-15 09:41:55ITPUB社区12周年站庆徽章
日期:2013-10-08 14:53:15ITPUB社区12周年站庆徽章
日期:2013-10-08 14:56:08ITPUB社区12周年站庆徽章
日期:2013-10-08 14:59:19ITPUB社区12周年站庆徽章
日期:2013-10-08 15:00:34
7#
发表于 2008-6-16 18:23 | 只看该作者
学习

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
8#
发表于 2008-6-16 20:54 | 只看该作者
-- Create table
create table TEST_PART
(
  ID   NUMBER,
  NAME VARCHAR2(5)
)
partition by range (ID)
(
  partition P1 values less than (2) ,
  partition P2 values less than (3) ,
  partition P3 values less than (4)
);

insert into test_part select 1,'***' from dba_objects where rownum<100;
insert into test_part select 2,'***' from dba_objects where rownum<100;
insert into test_part select 3,'***' from dba_objects where rownum<100;

SQL> select * from test_part where id=1;

99 rows selected.


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=99 Bytes=594)
   1    0   TABLE ACCESS (FULL) OF 'TEST_PART' (Cost=2 Card=99 Bytes=5
          94)
SQL> select * from test_part partition(p1);

99 rows selected.


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=99 Bytes=594)
   1    0   TABLE ACCESS (FULL) OF 'TEST_PART' (Cost=2 Card=99 Bytes=5
          94)
SQL> select * from test_part partition(p1);

99 rows selected.


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=99 Bytes=594)
   1    0   TABLE ACCESS (FULL) OF 'TEST_PART' (Cost=2 Card=99 Bytes=5
          94)

SQL> select * from test_part partition(p1);

99 rows selected.


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=99 Bytes=594)
   1    0   TABLE ACCESS (FULL) OF 'TEST_PART' (Cost=2 Card=99 Bytes=5
          94)

一样的

使用道具 举报

回复
论坛徽章:
66
现任管理团队成员
日期:2011-05-07 01:45:08版主9段
日期:2013-04-21 02:21:02ITPUB年度最佳版主
日期:2014-02-19 10:05:27ITPUB年度最佳版主
日期:2013-01-30 17:30:25ITPUB年度最佳技术原创精华奖
日期:2012-03-13 17:12:05优秀写手
日期:2013-12-18 09:29:15元宝章
日期:2015-02-10 19:57:54金牌徽章
日期:2015-02-10 19:59:42银牌徽章
日期:2015-02-10 19:59:42铜牌徽章
日期:2015-02-10 19:59:41
9#
发表于 2008-6-16 20:56 | 只看该作者
建议LZ分析下表,然后再看看呢

使用道具 举报

回复

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

本版积分规则 发表回复

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