各位好,求助一下,一個SQL優化問題
目前已知有個表如下資料

報表要求增加一列余額,需要根據單據號、時間自動排序,然后取該時間之前的所有金額的總和,如果相同時間則按訂單號排序取值。
目前是通過主子查詢做的,可以實作,但是目前資料量一大就卡的慢的要死。
有沒有好的解決方案可以提升此效率??

以下是 建表陳述句
--客戶余額表
--drop table khyeb
create table khyeb
(
djh varchar(50), --訂單號
khname varchar(50), --客戶名稱
rq char(19), --日期
je number(20,8) -- 金額
)
select * from khyeb for update
prompt Importing table khyeb...
set feedback off
set define off
insert into khyeb (DJH, KHNAME, RQ, JE)
values ('訂單號A1', '客戶A', '2020-09-23 09:00:00', 10.00000000);
insert into khyeb (DJH, KHNAME, RQ, JE)
values ('訂單號A2', '客戶A', '2020-09-23 10:00:00', 10.00000000);
insert into khyeb (DJH, KHNAME, RQ, JE)
values ('訂單號A3', '客戶A', '2020-09-23 10:00:00', 10.00000000);
insert into khyeb (DJH, KHNAME, RQ, JE)
values ('訂單號A4', '客戶A', '2020-09-23 10:00:00', 10.00000000);
insert into khyeb (DJH, KHNAME, RQ, JE)
values ('訂單號A5', '客戶A', '2020-09-23 11:00:00', 10.00000000);
insert into khyeb (DJH, KHNAME, RQ, JE)
values ('訂單號A6', '客戶A', '2020-09-23 12:00:00', 10.00000000);
prompt Done.
以下是通過主子查詢的實作,但是目前資料太多了,直接導致實在是太慢了。。。尋求優化,我覺得耗時點主要集中在主子查詢中。
select b.*,
(select nvl(sum(je),0) as ye from khyeb eb where 1=1 and eb.djh< b.djh and eb.khname = b.khname and eb.rq<b.rq )
as 余額 from khyeb b
以下是SQL的查詢
uj5u.com熱心網友回復:
求各位大神幫助。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/114961.html
標籤:開發
