色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 過濾查詢,SQL創(chuàng)建表里邊的with是什么意思

張吉惟2年前23瀏覽0評論
mysql 過濾查詢,SQL創(chuàng)建表里邊的with是什么意思?

通用表達(dá)式在各個商業(yè)數(shù)據(jù)庫中比如ORACLE,SQL SERVER等早就實(shí)現(xiàn)了,MySQL到了8.0 才支持這個特性。這里有兩個方面來舉例說明with的好處。

第一,易用性。

第二,效率。

舉例一 WITH表達(dá)式的易用性

我們第一個例子, 對比視圖的檢索和WITH的檢索。我們知道視圖在MySQL里面的效率一直較差,雖說MySQL5.7 對視圖做了相關(guān)固化的優(yōu)化,不

通用表達(dá)式在各個商業(yè)數(shù)據(jù)庫中比如ORACLE,SQL SERVER等早就實(shí)現(xiàn)了,MySQL到了8.0 才支持這個特性。這里有兩個方面來舉例說明WITH的好處。

第一,易用性。

第二,效率。

舉例一 WITH表達(dá)式的易用性

我們第一個例子, 對比視圖的檢索和WITH的檢索。我們知道視圖在MySQL里面的效率一直較差,雖說MySQL5.7 對視圖做了相關(guān)固化的優(yōu)化,不過依然不盡人意??紤]下,如果多次在同一條SQL中訪問視圖,那么則會多次固化視圖,勢必增加相應(yīng)的資源消耗。MySQL里之前對這種消耗的減少只有一種,就是動態(tài)處理,不過一直語法較為惡心,使用不是很廣。MySQL8.0后,又有了一種減少消耗的方式,就是WITH表達(dá)式。我們假設(shè)以下表結(jié)構(gòu):

有1000行測試記錄。這里我們建立一個普通的視圖:

檢索語句A:對視圖里的最大和最小值字段rank1進(jìn)行過濾檢索出符合條件的記錄行數(shù)。我們用WITH表達(dá)式來重寫一遍這個查詢。查詢語句B:

功能性演示, 索引表面上看執(zhí)行時間差不多, 我們來對比下兩條實(shí)現(xiàn)語句的查詢計(jì)劃,

A的計(jì)劃:

B的計(jì)劃:

從以上圖我們可以看出,B比A少了一次對視圖的固化,也就是說,不管我訪問WITH多少次,僅僅固化一次。有興趣的可以加大數(shù)據(jù)量,加大并發(fā)測試下性能。

舉例二 WITH表達(dá)式的功能性

我們第二個例子,簡單說功能性。

比如之前MySQL一直存在的一個問題,就是臨時表不能打開多次。我們以前只有一種解決辦法就是把臨時表固化到磁盤,像訪問普通表那樣訪問臨時表?,F(xiàn)在我們可以用MySQL8.0自帶的WITH表達(dá)式來做這樣的業(yè)務(wù)。

比如以下臨時表:我們還是用之前的查詢,這里會提示錯誤?,F(xiàn)在我們可以用WITH來改變這種思路當(dāng)然WITH的用法還有很多,感興趣的可以去看看手冊上的更深入的內(nèi)容。

過依然不盡人意??紤]下,如果多次在同一條SQL中訪問視圖,那么則會多次固化視圖,勢必增加相應(yīng)的資源消耗。

MySQL里之前對這種消耗的減少只有一種,就是動態(tài)處理,不過一直語法較為惡心,使用不是很廣。

MySQL8.0后,又有了一種減少消耗的方式,就是WITH表達(dá)式。我們假設(shè)以下表結(jié)構(gòu):

有1000行測試記錄。

這里我們建立一個普通的視圖:

檢索語句A:

對視圖里的最大和最小值字段rank1進(jìn)行過濾檢索出符合條件的記錄行數(shù)。

我們用WITH表達(dá)式來重寫一遍這個查詢。

查詢語句B:

我的函數(shù)很少,僅作功能性演示, 索引表面上看執(zhí)行時間差不多, 我們來對比下兩條實(shí)現(xiàn)語句的查詢計(jì)劃,

A的計(jì)劃:

B的計(jì)劃:

從以上圖我們可以看出,B比A少了一次對視圖的固化,也就是說,不管我訪問WITH多少次,僅僅固化一次。有興趣的可以加大數(shù)據(jù)量,加大并發(fā)測試下性能。

舉例二 WITH表達(dá)式的功能性

我們第二個例子,簡單說功能性。

比如之前MySQL一直存在的一個問題,就是臨時表不能打開多次。我們以前只有一種解決辦法就是把臨時表固化到磁盤,像訪問普通表那樣訪問臨時表?,F(xiàn)在我們可以用MySQL8.0自帶的WITH表達(dá)式來做這樣的業(yè)務(wù)。

比如以下臨時表:

我們還是用之前的查詢,這里會提示錯誤。

現(xiàn)在我們可以用WITH來改變這種思路。

當(dāng)然WITH的用法還有很多,感興趣的可以去看看手冊上的更深入的內(nèi)容。