日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

名为 cursor_jinserted 的游标不存在_性能优化技巧 - 程序游标

發(fā)布時(shí)間:2024/9/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 名为 cursor_jinserted 的游标不存在_性能优化技巧 - 程序游标 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很多算法都會(huì)產(chǎn)生落地的中間結(jié)果,從而影響性能,尤其是數(shù)據(jù)量較大的時(shí)候。這種情況下通常可用程序游標(biāo)來避免數(shù)據(jù)落地,下面舉例說明。

前半排序

計(jì)算目標(biāo):訂單表原來已按時(shí)間排序,需要將數(shù)據(jù)按日期、產(chǎn)品去除重復(fù),再統(tǒng)計(jì)記錄條數(shù)。

由于去重后結(jié)果集較大,內(nèi)存放不下,因此一般會(huì)用groupx去重,SPL腳本如下:

但函數(shù)groupx會(huì)導(dǎo)致數(shù)據(jù)落地,因此性能不高。

要使去重的中間結(jié)果不落地,可以先生成程序游標(biāo),distinctProduct.dfx腳本如下:

A2:循環(huán)訂單表。由于數(shù)據(jù)已按時(shí)間排序,因此每次取日期相同的一批數(shù)。

B2:按產(chǎn)品去重。注意,全量數(shù)據(jù)雖大,但按天取數(shù)相對(duì)較少,內(nèi)存可以放下,所以這里用id去重。

B3:返回本批次的去重結(jié)果。注意,程序游標(biāo)并非一次性返回所有數(shù)據(jù),而是每次循環(huán)之后,先等待調(diào)用者的請(qǐng)求,如果調(diào)用者繼續(xù)要數(shù)據(jù),程序游標(biāo)才會(huì)進(jìn)行下一次循環(huán),期間數(shù)據(jù)不落地。

主程序可通過cursor函數(shù)調(diào)用程序游標(biāo),用法與普通游標(biāo)類似:

可以看到,程序游標(biāo)可減少數(shù)據(jù)落地,從而提升計(jì)算性能。

集合運(yùn)算

數(shù)據(jù)庫(kù)進(jìn)行集合運(yùn)算時(shí)要先排序,如果數(shù)據(jù)量太大,則排序會(huì)耗費(fèi)大量時(shí)間,遲遲不能輸出結(jié)果。在這種情況下,適合用程序游標(biāo)生成不落地的有序中間結(jié)果集,從而實(shí)現(xiàn)快速輸出。

比如兩張結(jié)構(gòu)相同表:callRecordA、callRecordB。兩張表在時(shí)間字段callTime上建立了索引,每秒數(shù)據(jù)量萬級(jí),現(xiàn)在對(duì)2015-01-01這一天的數(shù)據(jù)做并集運(yùn)算,需要快速輸出前500條(比如在報(bào)表上快速呈現(xiàn))。

這次將程序游標(biāo)和調(diào)用代碼寫在同一個(gè)腳本中,如下:

A1:用func定義程序游標(biāo),相應(yīng)的調(diào)用語(yǔ)法為cursor@c。

B2:循環(huán)一天中的每一秒。

C3:從數(shù)據(jù)庫(kù)查詢一秒的數(shù)據(jù),因?yàn)槭前此饕?shù),所以速度很快,而且對(duì)數(shù)據(jù)庫(kù)影響很小。注意A1是表名變量,程序游標(biāo)既可以從callRecordA取數(shù),也可以從callRecordB取數(shù)。

C4:對(duì)一秒數(shù)據(jù)進(jìn)行內(nèi)存排序,以便形成有序結(jié)果集。由于數(shù)據(jù)在同一秒,所以只需對(duì)其他字段排序。

A7A8:以表名為參數(shù),取出2個(gè)程序游標(biāo)。

A9:對(duì)兩個(gè)游標(biāo)進(jìn)行有序歸并,@u表示取并集。類似地,可以用@i和@d分別進(jìn)行并交集、差集運(yùn)算。

總結(jié)

以上是生活随笔為你收集整理的名为 cursor_jinserted 的游标不存在_性能优化技巧 - 程序游标的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。