偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

第26期:再談?dòng)行蚍纸M

企業(yè)動(dòng)態(tài)
我們?cè)谟懻撚行蚍纸M時(shí)只研究了待分組集合的成員次序?qū)Ψ纸M運(yùn)算可能的影響,但即然要考慮集合的有序性,那么結(jié)果集的成員次序是不是也有業(yè)務(wù)意義呢?

【數(shù)據(jù)蔣堂】第26期:再談?dòng)行蚍纸M

細(xì)心的讀者可能會(huì)發(fā)現(xiàn),我們?cè)谟懻撚行蚍纸M時(shí)只研究了待分組集合的成員次序?qū)Ψ纸M運(yùn)算可能的影響,但即然要考慮集合的有序性,那么結(jié)果集的成員次序是不是也有業(yè)務(wù)意義呢?

確實(shí)有意義,不過(guò)重要程度不如原集有序性。

分組結(jié)果集的有序性有兩個(gè)方面,一是這些分組子集以什么次序返回,二是分組子集的成員是什么次序構(gòu)成的。

在考慮有序集合的等值分組運(yùn)算時(shí),我們認(rèn)為在缺省狀態(tài)下分組子集保持原序最為合理,即每個(gè)分組子集成員***次在原集中出現(xiàn)的次序。這個(gè)原因在于:其它次序(比如按分組字段值)可以針對(duì)結(jié)果集再排序而獲得,而原序很可能在分組完成后就丟失了,或者至少再獲得會(huì)比較困難。

比如我們要統(tǒng)計(jì)一本教科書中單詞的重復(fù)次數(shù),這是個(gè)簡(jiǎn)單的等值分組運(yùn)算,缺省的結(jié)果集應(yīng)當(dāng)是以新單詞在書中出現(xiàn)的先后次序?yàn)樾虻模@個(gè)次序是有業(yè)務(wù)意義的,向?qū)W生講授這本書時(shí)可以按該次序讓學(xué)生預(yù)習(xí)生詞。而這個(gè)次序如果不是在分組運(yùn)算后返回,就會(huì)很難獲得了。需要給每個(gè)單詞人為增加一個(gè)在書中出現(xiàn)的次序號(hào),分組時(shí)同時(shí)把次序號(hào)的最小值也統(tǒng)計(jì)出來(lái),然后再按這個(gè)值排序,***又丟棄這個(gè)值。運(yùn)算過(guò)程繁瑣且效率低。

對(duì)位分組和枚舉分組的結(jié)果集次序,顯然應(yīng)當(dāng)與基準(zhǔn)集合一致。而有序分組的結(jié)果集次序,則顯然按每個(gè)分組產(chǎn)生的次序最為合理。

基于無(wú)序集合的SQL沒(méi)有約定分組結(jié)果集的次序,返回結(jié)果集就不能保證原序了。在實(shí)踐上,數(shù)據(jù)庫(kù)一般是采用HASH方法來(lái)實(shí)現(xiàn)分組的,這時(shí)結(jié)果集的次序常常是HASH值的次序,而HASH值次序毫無(wú)業(yè)務(wù)意義,在關(guān)心次序時(shí)就還需要再排序,而為了獲得排序依據(jù)就要象前面例子中說(shuō)的那樣在原集中新增序號(hào)信息,并參與到分組運(yùn)算中,麻煩且低效。還有的數(shù)據(jù)庫(kù)是用排序來(lái)做分組,結(jié)果集的次序就是分組字段(表達(dá)式)的次序,這個(gè)次序有一定業(yè)務(wù)意義了,但想還原出原序也不容易。

我們前面說(shuō)過(guò),SQL中用LEFT JOIN的方法可以實(shí)現(xiàn)出對(duì)位和枚舉分組的效果,但無(wú)論是HASH方法還是排序方法,結(jié)果集都會(huì)喪失基準(zhǔn)集合的次序。而對(duì)位和枚舉分組的結(jié)果集次序又是非常必要的,想通過(guò)再排序來(lái)獲得這個(gè)次序,需要在基準(zhǔn)集合中就要維護(hù)個(gè)次序號(hào),這會(huì)使得本來(lái)簡(jiǎn)單的單值成員集合變成多字段的記錄集合,而且當(dāng)基準(zhǔn)集合需要插入/刪除成員時(shí)還要繼續(xù)維護(hù)序號(hào)會(huì)是個(gè)很麻煩的事情,被改動(dòng)成員后面的成員序號(hào)都要調(diào)整。所以SQL實(shí)現(xiàn)對(duì)位和枚舉分組是個(gè)很繁瑣的事情。

至于子集成員的次序,原則上也應(yīng)當(dāng)缺省保持原序,也就是在原集合中的次序。不過(guò),它是否有意義取決于后續(xù)要執(zhí)行的動(dòng)作。

比如SQL就完全不關(guān)心這個(gè)次序,SQL在分組后會(huì)強(qiáng)制聚合,而且只有SUMM/COUNT這些運(yùn)算結(jié)果與執(zhí)行次序無(wú)關(guān)的常規(guī)聚合運(yùn)算,分組子集的成員次序就沒(méi)有意義了。

但有些非常規(guī)聚合運(yùn)算可能和執(zhí)行次序有關(guān),比如用登錄日志(日志缺省都是按事件發(fā)生時(shí)刻有序的)列出每個(gè)用戶的***兩次登錄的時(shí)間間隔,就是按用戶分組后取出分組子集的***兩條記錄計(jì)算時(shí)間差,這時(shí)就會(huì)關(guān)心子集成員的次序了。不過(guò),這已經(jīng)是聚合運(yùn)算的范疇了,我們將在后面的文章中再詳細(xì)討論。

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2017-10-09 22:33:56

SQL等值分組有序分組

2017-09-13 08:45:33

遍歷SQL運(yùn)算

2017-12-26 15:33:24

JOINSQL運(yùn)算

2017-09-27 08:25:35

SQL等值分組運(yùn)算

2018-03-08 11:13:28

AWSAI云服務(wù)

2009-02-18 09:08:46

2011-09-01 15:45:15

SSL證書網(wǎng)絡(luò)·安全技術(shù)周刊

2016-07-05 14:49:09

人力資源互聯(lián)網(wǎng)+V課堂

2013-01-21 13:41:59

IBMdW

2014-06-25 10:24:01

網(wǎng)絡(luò)安全周刊

2017-09-05 22:34:24

遍歷SQL運(yùn)算

2018-01-18 20:47:18

CPU數(shù)據(jù)線程

2018-01-24 07:45:51

數(shù)據(jù)倍增分段列存

2017-11-08 06:18:43

JOINSQL運(yùn)算

2014-02-18 15:32:12

移動(dòng)技術(shù)半月刊

2018-02-06 23:30:07

文件存儲(chǔ)數(shù)據(jù)

2017-05-25 08:56:22

硬盤性能特征

2017-11-15 06:36:25

JOINSQL運(yùn)算

2017-12-10 22:42:50

JOINSQL運(yùn)算

2017-12-12 22:48:21

JOIN維度運(yùn)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)