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 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?