原本有两个表,t0201_gsinfo_registerd、t0101_enterprise_base各有8万多条记录。
后来,建了聚簇和聚簇索引:
create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));
create index bookssss on cluster BOOKandAUTHOR;
并建了另外两个表结构和数据都完全相同表:h0201_gsinfo_registerd、tj0101_enterprise_base,用它们的chinese_name字段建了索引。
结果,发现测试的查询结果如下:
建聚簇前:
select count(*) from t0201_gsinfo_registerd t where t.chinese_name in (select a.chinese_name from t0101_enterprise_base a) 结果83117,执行时间1.4秒。
select count(*) from t0201_gsinfo_registerd t,t0101_enterprise_base a where t.chinese_name=a.chinese_name 执行时间1.2秒。
select * from t0201_gsinfo_registerd t where t.chinese_name='上海无狄食用菌科技有限公司' 执行时间0.3秒。
select * from t0201_gsinfo_registerd t, t0101_enterprise_base a where t.chinese_name=a.chinese_name
and t.chinese_name='上海彩铺工艺品有限公司' or a.chinese_name='胜科临富(上海)机械制造有限公司' 23行,执行时间1.56秒。 建聚簇后:
select count(*) from h0201_gsinfo_registerd t where t.chinese_name in (select a.chinese_name from h0101_enterprise_base a) 结果83117,执行时间1301秒。
select * from h0201_gsinfo_registerd t, h0101_enterprise_base a where t.chinese_name=a.chinese_name 执行时间345秒。
select * from t0201_gsinfo_registerd t where t.chinese_name='上海无狄食用菌科技有限公司' 执行时间0.3秒。
select * from h0201_gsinfo_registerd t, h0101_enterprise_base a where t.chinese_name=a.chinese_name
and t.chinese_name='上海彩铺工艺品有限公司' or a.chinese_name='胜科临富(上海)机械制造有限公司' 23行,执行时间0.21秒。
其余试的其语句,建聚簇后都要慢得多。
盼仁兄,指点一二。
后来,建了聚簇和聚簇索引:
create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));
create index bookssss on cluster BOOKandAUTHOR;
并建了另外两个表结构和数据都完全相同表:h0201_gsinfo_registerd、tj0101_enterprise_base,用它们的chinese_name字段建了索引。
结果,发现测试的查询结果如下:
建聚簇前:
select count(*) from t0201_gsinfo_registerd t where t.chinese_name in (select a.chinese_name from t0101_enterprise_base a) 结果83117,执行时间1.4秒。
select count(*) from t0201_gsinfo_registerd t,t0101_enterprise_base a where t.chinese_name=a.chinese_name 执行时间1.2秒。
select * from t0201_gsinfo_registerd t where t.chinese_name='上海无狄食用菌科技有限公司' 执行时间0.3秒。
select * from t0201_gsinfo_registerd t, t0101_enterprise_base a where t.chinese_name=a.chinese_name
and t.chinese_name='上海彩铺工艺品有限公司' or a.chinese_name='胜科临富(上海)机械制造有限公司' 23行,执行时间1.56秒。 建聚簇后:
select count(*) from h0201_gsinfo_registerd t where t.chinese_name in (select a.chinese_name from h0101_enterprise_base a) 结果83117,执行时间1301秒。
select * from h0201_gsinfo_registerd t, h0101_enterprise_base a where t.chinese_name=a.chinese_name 执行时间345秒。
select * from t0201_gsinfo_registerd t where t.chinese_name='上海无狄食用菌科技有限公司' 执行时间0.3秒。
select * from h0201_gsinfo_registerd t, h0101_enterprise_base a where t.chinese_name=a.chinese_name
and t.chinese_name='上海彩铺工艺品有限公司' or a.chinese_name='胜科临富(上海)机械制造有限公司' 23行,执行时间0.21秒。
其余试的其语句,建聚簇后都要慢得多。
盼仁兄,指点一二。
解决方案 »
- 求助,如何实现一个表里的数据按照层等级来累加呀?
- sql 优化
- pl/sql删除数据后,通过PB还能查询到已经删除的数据
- 求个函数,在线等啊
- 如何将在别人机器oracle数据库上expdp导出的文件在我的机器oracle数据库导入进来 急
- 救火,救火,救火
- 请问:我在用sqlplus连接库时,我随便输入了用户名和密码就登陆进去了(是用sysdba),那不有问题了,谁都能进去了??
- SOS[帮助我](在线等待)!!!!!!!!
- 100分求解几个概念!。。。新手问题
- Oracle8i为什么在WIN2000server英文版上不能安装??????
- 用DBCA创建数据库时,如何更改“文件位置变量”
- 请问oracle中是否有这样的机制,把一张表的内容自动的填充到另一张表中?
用来做什么?判断是否存在还是计数,这种写法效率很低计数这么写
select count(a.*)
from h0201_gsinfo_registerd a, h0101_enterprise_base b
where a.chinese_name = b.chinese_name 存在
select count(a.*)
from h0201_gsinfo_registerd a, h0101_enterprise_base b
where a.chinese_name = b.chinese_name
and a.rownum < 2
如果要弄清楚为什么效率下降,请做执行规划分析
explain plan for
select count(a.*)
from h0201_gsinfo_registerd a, h0101_enterprise_base b
where a.chinese_name = b.chinese_name;
explain plan for
select count(*) from t0201_gsinfo_registerd t where t.chinese_name in (select a.chinese_name from t0101_enterprise_base a);上面的回答写错了