iteye_15616 2009-10-15 11:12
浏览 685
已采纳

oracle 千万级数据表,全表查询优化时怎样使用临时表

1、oracle 千万级数据表,全表查询优化时怎样使用临时表。
2、使用存储过程查询表中不重复的客户ID,和相关的客户收入。
使用语句如下
select b.*
from dw_kefu_activity_data_m b
where b.rowid = (select max(a.rowid)
from dw_kefu_activity_data_m a
where a.cust_id = b.cust_id)
,但是表数据过多(几千万),效率慢。
求优化,只知道用临时表能优化,但是怎么用不太清楚。查了半天资料,没找到相关内容。
谢谢。。。。 :oops:
[b]问题补充:[/b]
建表语句:
create table DW_KEFU_ACTIVITY_DATA_M
(
STATIS_MONTH VARCHAR2(20),
CUST_ID VARCHAR2(100),
CUST_LEVEL VARCHAR2(10),
YKC_20 NUMBER(20),
YKC_30 NUMBER(20),
YKC_50 NUMBER(20),
YKC_100 NUMBER(20),
YKC_300 NUMBER(20),
YKC_500 NUMBER(20),
AX_CARD NUMBER(20),
AM_CARD NUMBER(20),
AJ_CARD NUMBER(20),
FINALLY_ACCOUNT NUMBER(30,12)
)
查询语句:
select b.*
from dw_kefu_activity_data_m b
where b.rowid = (select max(a.rowid)
from dw_kefu_activity_data_m a
where a.cust_id = b.cust_id)
查询计划不是到是不是下面的(图片test解释计划.jpg):

应为是在本地测试的,所以dw_kefu_activity_data_m里面的数据只是105条,实际数据要多的多大概1千万左右吧。

[b]问题补充:[/b]
没有建索引。。。
对索引不太熟,只大概了解下,数据量大的时候,建索引会增加开销。就没考虑索引。

  • 写回答

5条回答

  • icefishc 2009-10-15 16:51
    关注

    哦。。。。。 试下在cust_id上加个索引看看

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 手机连接电脑热点显示无ip分配
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大