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 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名