1. 程式人生 > >再一次利用with as 優化SQL

再一次利用with as 優化SQL

上海的一個哥們問我有個SQL跑了4個小時都沒跑完,實在受不了了,找我優化一下。我確實挺佩服他的,要是我遇到跑了幾分鐘的,就受不了了。

SQL語句和執行計劃如下:

--sql id:1qbbw3th4x8yc

 

SELECT "VOUCHER".FID "ID",

       "ENTRIES".FID "ENTRIES.ID",

       "ENTRIES".FEntryDC "ENTRIES.ENTRYDC",

       "ACCOUNT".FID "ACCOUNT.ID",

       "ENTRIES".FCurrencyID "CURRENCY.ID",

       "PERIOD".FNumber "PERIOD.NUMBER",

       "ENTRIES".FSeq "ENTRIES.SEQ",

       "ENTRIES".FLocalExchangeRate "LOCALEXCHANGERATE",

       "ENTRIES".FReportingExchangeRate "REPORTINGEXCHANGERATE",

       "ENTRIES".FMeasureUnitID "ENTRYMEASUREUNIT.ID",

       "ASSISTRECORDS".FID "ASSISTRECORDS.ID",

       "ASSISTRECORDS".FSeq "ASSISTRECORDS.SEQ",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FOriginalAmount

         ELSE

          "ASSISTRECORDS".FOriginalAmount

       END "ASSISTRECORDS.ORIGINALAMOUNT",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FLocalAmount

         ELSE

          "ASSISTRECORDS".FLocalAmount

       END "ASSISTRECORDS.LOCALAMOUNT",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FReportingAmount

         ELSE

          "ASSISTRECORDS".FReportingAmount

       END "ASSISTRECORDS.REPORTINGAMOUNT",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FQuantity

         ELSE

          "ASSISTRECORDS".FQuantity

       END "ASSISTRECORDS.QUANTITY",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FStandardQuantity

         ELSE

          "ASSISTRECORDS".FStandardQuantity

       END "ASSISTRECORDS.STANDARDQTY",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FPrice

         ELSE

          "ASSISTRECORDS".FPrice

       END "ASSISTRECORDS.PRICE",

       CASE

         WHEN ("ACCOUNT".FCAA IS NULL) THEN

          NULL

         ELSE

          "ASSISTRECORDS".FAssGrpID

       END "ASSGRP.ID"

  FROM T_GL_Voucher "VOUCHER"

  LEFT OUTER JOIN T_BD_Period "PERIOD"

    ON "VOUCHER".FPeriodID = "PERIOD".FID

 INNER JOIN T_GL_VoucherEntry "ENTRIES"

    ON "VOUCHER".FID = "ENTRIES".FBillID

 INNER JOIN T_BD_AccountView "ACCOUNT"

    ON "ENTRIES".FAccountID = "ACCOUNT".FID

  LEFT OUTER JOIN T_GL_VoucherAssistRecord "ASSISTRECORDS"

    ON "ENTRIES".FID = "ASSISTRECORDS".FEntryID

 WHERE "VOUCHER".FID IN

       (SELECT "VOUCHER".FID "ID"

          FROM T_GL_Voucher "VOUCHER"

         INNER JOIN T_GL_VoucherEntry "ENTRIES"

            ON "VOUCHER".FID = "ENTRIES".FBillID

         INNER JOIN T_BD_AccountView "ACCOUNT"

            ON "ENTRIES".FAccountID = "ACCOUNT".FID

         INNER JOIN t_bd_accountview PAV

            ON ((INSTR("ACCOUNT".flongnumber, pav.flongnumber) = 1 AND

               pav.faccounttableid = "ACCOUNT".faccounttableid) AND

               pav.fcompanyid = "ACCOUNT".fcompanyid)

         WHERE (("VOUCHER".FCompanyID IN ('fSSF82rRSKexM3KKN1d0tMznrtQ=')) AND

               (("VOUCHER".FBizStatus IN (5)) AND

               ((("VOUCHER".FPeriodID IN ('+wQxkBFVRiKnV7OniceMDoI4jEw=')) AND

               "ENTRIES".FCurrencyID =

               'dfd38d11-00fd-1000-e000-1ebdc0a8100dDEB58FDC') AND

               (pav.FID IN ('vyPiKexLRXiyMb41VSVVzJ2pmCY='))))))

 ORDER BY "ID" ASC, "ENTRIES.SEQ" ASC, "ASSISTRECORDS.SEQ" ASC

 

--執行計劃

 

--------------------------------------------------------------------------------------------------------

| Id  | Operation                              | Name                     | Rows  | Bytes | Cost (%CPU)|

--------------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT                       |                          |    13 |  5733 |   486   (1)|

|   1 |  SORT ORDER BY                         |                          |    13 |  5733 |   486   (1)|

|   2 |   VIEW                                 | VM_NWVW_2                |    13 |  5733 |   486   (1)|

|   3 |    HASH UNIQUE                         |                          |    13 | 11115 |   486   (1)|

|   4 |     NESTED LOOPS OUTER                 |                          |    13 | 11115 |   485   (1)|

|   5 |      NESTED LOOPS                      |                          |     9 |  6606 |   471   (1)|

|   6 |       NESTED LOOPS                     |                          |     9 |  6057 |   467   (1)|

|   7 |        MERGE JOIN OUTER                |                          |     1 |   473 |   459   (1)|

|   8 |         HASH JOIN                      |                          |     1 |   427 |   458   (1)|

|   9 |          NESTED LOOPS                  |                          |       |       |            |

|  10 |           NESTED LOOPS                 |                          |   258 | 83850 |   390   (0)|

|  11 |            NESTED LOOPS                |                          |     6 |  1332 |     3   (0)|

|  12 |             TABLE ACCESS BY INDEX ROWID| T_BD_ACCOUNTVIEW         |     1 |   111 |     2   (0)|

|  13 |              INDEX UNIQUE SCAN         | PK_BD_ACCOUNTVIEW        |     1 |       |     1   (0)|

|  14 |             INDEX RANGE SCAN           | IX_BD_ACTCOMLNUM         |     6 |   666 |     1   (0)|

|  15 |            INDEX RANGE SCAN            | IX_GL_VCHAACCT           |   489 |       |     1   (0)|

|  16 |           TABLE ACCESS BY INDEX ROWID  | T_GL_VOUCHERENTRY        |    42 |  4326 |    65   (0)|

|  17 |          INDEX RANGE SCAN              | IX_GL_VCH_11             |  7536 |   750K|    68   (0)|

|  18 |         BUFFER SORT                    |                          |     1 |    46 |   391   (0)|

|  19 |          INDEX RANGE SCAN              | IX_PERIOD_ENC            |     1 |    46 |     1   (0)|

|  20 |        TABLE ACCESS BY INDEX ROWID     | T_GL_VOUCHERENTRY        |    17 |  3400 |     8   (0)|

|  21 |         INDEX RANGE SCAN               | IX_GL_VCHENTRYFQ1        |    17 |       |     1   (0)|

|  22 |       TABLE ACCESS BY INDEX ROWID      | T_BD_ACCOUNTVIEW         |     1 |    61 |     1   (0)|

|  23 |        INDEX UNIQUE SCAN               | PK_BD_ACCOUNTVIEW        |     1 |       |     1   (0)|

|  24 |      TABLE ACCESS BY INDEX ROWID       | T_GL_VOUCHERASSISTRECORD |     1 |   121 |     2   (0)|

|  25 |       INDEX RANGE SCAN                 | IX_GL_VCHASSREC_11       |     2 |       |     1   (0)|

--------------------------------------------------------------------------------------------------------

 

Note

-----

   - 'PLAN_TABLE' is old version

我靠 plan_table is old version....一般遇到這種執行計劃發給我 我是理都不理的,但是 這哥們關係好,算了吧 勉為其難。

那我就不從執行計劃 入手優化了,直接分析sql語句優化。這個sql挺簡單的,from 後面幾個表, where 有個 in ,最後有個order by

問他 in 後面返回多少記錄

落落  17:11:46

你先看 where in 裡面跑多久
上海-咖啡迷  17:12:40
很快
23s 16880rows

其他表大小如下

看到這些就知道怎麼優化了 。之前跑4個小時不出結果,那行嘛 我給你優化到1分鐘

in 只返回16880條資料,那麼可以用in作為驅動表去驅動 T_GL_Voucher

因為in裡面有點複雜,不好用hint,我偷懶,難得去搞了,直接 用下面的sql 優化

with x as  (SELECT  /*+ materialize */  "VOUCHER".FID "ID"

          FROM T_GL_Voucher "VOUCHER"

         INNER JOIN T_GL_VoucherEntry "ENTRIES"

            ON "VOUCHER".FID = "ENTRIES".FBillID

         INNER JOIN T_BD_AccountView "ACCOUNT"

            ON "ENTRIES".FAccountID = "ACCOUNT".FID

         INNER JOIN t_bd_accountview PAV

            ON ((INSTR("ACCOUNT".flongnumber, pav.flongnumber) = 1 AND

               pav.faccounttableid = "ACCOUNT".faccounttableid) AND

               pav.fcompanyid = "ACCOUNT".fcompanyid)

         WHERE (("VOUCHER".FCompanyID IN ('fSSF82rRSKexM3KKN1d0tMznrtQ=')) AND

               (("VOUCHER".FBizStatus IN (5)) AND

               ((("VOUCHER".FPeriodID IN ('+wQxkBFVRiKnV7OniceMDoI4jEw=')) AND

               "ENTRIES".FCurrencyID =

               'dfd38d11-00fd-1000-e000-1ebdc0a8100dDEB58FDC') AND

               (pav.FID IN ('vyPiKexLRXiyMb41VSVVzJ2pmCY='))))))

SELECT "VOUCHER".FID "ID",

       "ENTRIES".FID "ENTRIES.ID",

       "ENTRIES".FEntryDC "ENTRIES.ENTRYDC",

       "ACCOUNT".FID "ACCOUNT.ID",

       "ENTRIES".FCurrencyID "CURRENCY.ID",

       "PERIOD".FNumber "PERIOD.NUMBER",

       "ENTRIES".FSeq "ENTRIES.SEQ",

       "ENTRIES".FLocalExchangeRate "LOCALEXCHANGERATE",

       "ENTRIES".FReportingExchangeRate "REPORTINGEXCHANGERATE",

       "ENTRIES".FMeasureUnitID "ENTRYMEASUREUNIT.ID",

       "ASSISTRECORDS".FID "ASSISTRECORDS.ID",

       "ASSISTRECORDS".FSeq "ASSISTRECORDS.SEQ",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FOriginalAmount

         ELSE

          "ASSISTRECORDS".FOriginalAmount

       END "ASSISTRECORDS.ORIGINALAMOUNT",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FLocalAmount

         ELSE

          "ASSISTRECORDS".FLocalAmount

       END "ASSISTRECORDS.LOCALAMOUNT",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FReportingAmount

         ELSE

          "ASSISTRECORDS".FReportingAmount

       END "ASSISTRECORDS.REPORTINGAMOUNT",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FQuantity

         ELSE

          "ASSISTRECORDS".FQuantity

       END "ASSISTRECORDS.QUANTITY",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FStandardQuantity

         ELSE

          "ASSISTRECORDS".FStandardQuantity

       END "ASSISTRECORDS.STANDARDQTY",

       CASE

         WHEN (("ACCOUNT".FCAA IS NULL) AND

              ("ACCOUNT".FhasUserProperty <> 1)) THEN

          "ENTRIES".FPrice

         ELSE

          "ASSISTRECORDS".FPrice

       END "ASSISTRECORDS.PRICE",

       CASE

         WHEN ("ACCOUNT".FCAA IS NULL) THEN

          NULL

         ELSE

          "ASSISTRECORDS".FAssGrpID

       END "ASSGRP.ID"

  FROM T_GL_Voucher "VOUCHER"

  LEFT OUTER JOIN T_BD_Period "PERIOD"

    ON "VOUCHER".FPeriodID = "PERIOD".FID

 INNER JOIN T_GL_VoucherEntry "ENTRIES"

    ON "VOUCHER".FID = "ENTRIES".FBillID

 INNER JOIN T_BD_AccountView "ACCOUNT"

    ON "ENTRIES".FAccountID = "ACCOUNT".FID

  LEFT OUTER JOIN T_GL_VoucherAssistRecord "ASSISTRECORDS"

    ON "ENTRIES".FID = "ASSISTRECORDS".FEntryID

 WHERE "VOUCHER".FID IN

       (select id from x)

 ORDER BY "ID" ASC, "ENTRIES.SEQ" ASC, "ASSISTRECORDS.SEQ" ASC

 

---======執行計劃

------------------------------------------------------------------------------------------------------

| Id  | Operation                         | Name                        | Rows  | Bytes | Cost (%CPU)|

------------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT                  |                             |    24 | 11208 |   506   (1)|

|   1 |  TEMP TABLE TRANSFORMATION        |                             |       |       |            |

|   2 |   LOAD AS SELECT                  | SYS_TEMP_0FD9D6853_1AD5C99D |       |       |            |

|   3 |    HASH JOIN                      |                             |     1 |   415 |   458   (1)|

|   4 |     NESTED LOOPS                  |                             |       |       |            |

|   5 |      NESTED LOOPS                 |                             |   258 | 83850 |   390   (0)|

|   6 |       NESTED LOOPS                |                             |     6 |  1332 |     3   (0)|

|   7 |        TABLE ACCESS BY INDEX ROWID| T_BD_ACCOUNTVIEW            |     1 |   111 |     2   (0)|

|   8 |         INDEX UNIQUE SCAN         | PK_BD_ACCOUNTVIEW           |     1 |       |     1   (0)|

|   9 |        INDEX RANGE SCAN           | IX_BD_ACTCOMLNUM            |     6 |   666 |     1   (0)|

|  10 |       INDEX RANGE SCAN            | IX_GL_VCHAACCT              |   489 |       |     1   (0)|

|  11 |      TABLE ACCESS BY INDEX ROWID  | T_GL_VOUCHERENTRY           |    42 |  4326 |    65   (0)|

|  12 |     INDEX RANGE SCAN              | IX_GL_VCH_11                |  7536 |   662K|    68   (0)|

|  13 |   SORT ORDER BY                   |                             |    24 | 11208 |    48   (5)|

|  14 |    NESTED LOOPS OUTER             |                             |    24 | 11208 |    47   (3)|

|  15 |     NESTED LOOPS                  |                             |    17 |  6086 |    21   (5)|

|  16 |      NESTED LOOPS                 |                             |    17 |  5253 |    13   (8)|

|  17 |       NESTED LOOPS OUTER          |                             |     1 |   121 |     5  (20)|

|  18 |        NESTED LOOPS               |                             |     1 |    87 |     4  (25)|

|  19 |         VIEW                      | VW_NSO_1                    |     1 |    29 |     2   (0)|

|  20 |          HASH UNIQUE              |                             |     1 |    24 |            |

|  21 |           VIEW                    |                             |     1 |    24 |     2   (0)|

|  22 |            TABLE ACCESS FULL      | SYS_TEMP_0FD9D6853_1AD5C99D |     1 |    29 |     2   (0)|

|  23 |         INDEX RANGE SCAN          | IX_GL_VCH_FIDCMPNUM         |     1 |    58 |     1   (0)|

|  24 |        INDEX RANGE SCAN           | IX_PERIOD_ENC               |     1 |    34 |     1   (0)|

|  25 |       TABLE ACCESS BY INDEX ROWID | T_GL_VOUCHERENTRY           |    17 |  3196 |     8   (0)|

|  26 |        INDEX RANGE SCAN           | IX_GL_VCHENTRYFQ1           |    17 |       |     1   (0)|

|  27 |      TABLE ACCESS BY INDEX ROWID  | T_BD_ACCOUNTVIEW            |     1 |    49 |     1   (0)|

|  28 |       INDEX UNIQUE SCAN           | PK_BD_ACCOUNTVIEW           |     1 |       |     1   (0)|

|  29 |     TABLE ACCESS BY INDEX ROWID   | T_GL_VOUCHERASSISTRECORD    |     1 |   109 |     2   (0)|

|  30 |      INDEX RANGE SCAN             | IX_GL_VCHASSREC_11          |     2 |       |     1   (0)|

------------------------------------------------------------------------------------------------------

最後 1分鐘全部查詢出來,42956條資料

其實這個sql 沒有 優化徹底,如果真的要認真對待,大概30秒左右就能跑完 不過難得搞了

有sql 要優化 加我qq 692162374 或者 加 群 220761024

想要跟我學優化的,請點選這裡

最後我才知道 這個哥們 18k了 現在 我操。。。。他跟我學了ORACLE sql優化大概4個月了



相關推薦

利用with as 優化SQL

上海的一個哥們問我有個SQL跑了4個小時都沒跑完,實在受不了了,找我優化一下。我確實挺佩服他的,要是我遇到跑了幾分鐘的,就受不了了。 SQL語句和執行計劃如下: --sql id:1qbbw3th4x8yc SELECT "VOUCHER".FID "ID",

使用WITH AS 優化SQL

馬上就要單身節了,正在想今年我去禍害誰家的姑娘,突然QQ好友發來資訊,說能否幫忙優化一個SQL,SQL調優做得實在太多了,都已經麻木了,反正優化一個SQL也就幾秒鐘到幾分鐘的事情。 哥們說下面的SQL要跑5個多小時 SELECT B.AREA

SQL優化案例-使用with as優化Subquery Unnesting(七)

使用 no_unnest hint可以讓執行計劃產生filter,即不展開,但一般情況下使用unnest hint無法消除filter。 如下SQL,找出庫中非唯一索引,那麼大家可能會這麼寫SQL: SELECT SEGMENT_NAME,SUM(BYTES/1024/1024) m FRO

SQL Server 利用WITH AS遞迴獲取層級關係資料

WITH AS短語,也叫做子查詢部分(subquery factoring),在SQL Server 2005中提供了一種解決方案,這就是公用表表達式(CTE),使用CTE,可以使SQL語句的可維護性,同時,CTE要比表變數的效率高得多。     下面是CTE的語法:

用merge優化update

程式碼上線前稽核,某銀行理財系統一條update執行了一個多小時…… 改寫前的SQL以及執行計劃 update fnc.t1_cust_sign_info s set s.is_wealth = (select case

Unite'17 Shanghai問候

經理 動畫 nal 會議 公司 遊戲開發 一場 未來 family Unite‘17 Shanghai再一次問候 --暨Unity2017年度大會 2017年5月11日,主題為“再一次問候”的Unity年度盛會在上海國際會議中心舉行,這是Unity繼GDC

服務器Tomcat優化經歷

type tomcat優化 ext stream jpg 試用 ros index ctp 博主原創,轉載請註明。 公司需要一臺測試服務器來做測試用,所以花了幾天時間把服務全部部署好,在部署好war包之後,發現Tomcat訪問超級慢。 1、進入Tomcat的bin目錄下,運

對真實網站的SQL註入———SQLmap使用

md5 password blog 發生 為我 www mysql 賬戶 9.png 網上有許多手工註入SQL的例子和語句,非常值得我們學習,手工註入能讓我們更加理解網站和數據庫的關系,也能明白為什麽利用註入語句能發現網站漏洞。 因為我是新手,註入語句還不太熟悉,我這次是手

動態規劃和分治法,貪心算法以及遞歸的深刻理解和體會

規劃 動態 分治法 每次體會算法都有新的感覺,刷題越多,對算法的理解感覺也就越深刻。下面我們來重新體會下分治法,動態規劃,貪心法,遞歸的理解。1.分治法: 將問題分成單獨的階段,每個階段互相不幹擾很獨立,如10米長的木棍,切成10段,每段去解決每一段的問題。(階段沒有關系)2.貪心法 站

前端性能優化的案例

uga 手動更新 分享 不生效 花屏 打開 重繪 通過 。。 前兩天遇到一個前端性能相關的bug,感覺還挺典型的,整理了一下解決過程和思路,寫下來分享給大家。 場景是這樣的,有一個答題的界面,可以播放音頻、填空、提交答案,界面是長這個樣子的: 看起來還挺簡單吧,但是

mysql repeatable-read 利用間隙鎖解決幻讀案例

修改 進行 最大值 優化 sha 條件 臟讀 事務隔離 rom repeatable-read是Mysql默認事務隔離級別!能解決臟讀以及不可重復讀的問題,但可能出現幻讀的情況 不可重復讀:在一個未提交的事務裏,二次查詢結果可能不相同,因為在這個事務執行過程中,外面的

CSS的深入(更新中···)

區別 無序 type 正方形 png 需要 有一種 選中 -h 全面我們學了6個選擇器,今天再來學習兩個選擇器,分別是通配符選擇器和並集選擇器: 1.通配符選擇器:   *{ } 表示body裏所有的標簽都被選中 2.並集選擇器: 選中的標簽之間用逗號隔開,表示這幾個標簽

www808888webcom最近做了對查詢的優化之後199O8836661檢視由EXPLAIN

最近做了一次對查詢的優化之後,我發現了一種更好的方式來檢視由EXPLAIN生成的查詢計劃。因此,我最終決定需要做些什麼,結果就是Postgres EXPLAIN Visualizer工具(或者叫Pev):Pev:Postgres的視覺化工具 為什麼創造Pev 我想要一款能讓使用者很輕鬆的就可以理解查詢計劃

被入侵之潛伏的挖礦病毒

今天是11月10號,正在忙著做雙十一凌晨流量衝擊的加固工作,登入xx伺服器的時候無意間發現CPU的使用率達到了70%,按常理分析,xx伺服器資源不會使用這麼高的,ps 排序一下程序資源使用,如下圖: 果然,有一個高負載的程序“-sh”,佔用CPU達到了599%, 據經驗分析,這絕逼又是

利用動態除錯so包破解協議 (2)

繼續上一篇https://blog.csdn.net/u014476720/article/details/83650566的操作 上一篇只分析出so包裡面的 buildParam2 裡面的加密方式,這一篇來看看buildParam1的加密方式 這裡分析是已使用者主頁的介

利用動態除錯so包破解協議 (1)

前期工作: 1.設定手機為除錯模式,我這裡用了 mprop 相關命令: 1.chmod 755 /data/local/tmp/mprop 2.data/local/tmp/mprop 3.setprop ro.debuggable 1 4./data/local/tmp/mprop

清除挖礦病毒

前半個月出現的一次挖礦病毒,當時感覺處理了   ,過了兩週 不想又出現!!!噁心,鬱悶 總結幾點: 1.找到域名或者IP確認是不認識的,進行處理檢視定時任務 2.檢視定時任務 3.時刻注意/tmp檔案下的資料夾和檔案 4.出現這個問題的原因應該是redis免密造成的

MySQL基礎系列之 記利用儲存過程實現2600萬資料水平分表

日常開發中我們經常會遇到大表的情況,所謂的大表是指儲存了百萬級乃至千萬級條記錄的表。這樣的表過於龐大,導致資料庫在查詢和插入的時候耗時太長,效能低下,如果涉及聯合查詢的情況,效能會更加糟糕。分表的目的就是減少資料庫的負擔,提高資料庫的效率,通常點來講就是提高表的增刪改查效率,本文將介紹我

Pantera Capital加密基金縮水72%,證明多元化策略行不通?

據ethereumworldnews10月7日報道,Pantera Capital旗下的數字資產基金今年迄今表現不如比特幣,跌幅達72%。該基金的複合年增長率(CAGR)也下降了50.3%。 CollinCrypto的資料顯示,作為加密貨幣領域領先風險基金之一Pantera

使用with as優化Subquery Unnesting

使用 no_unnest hint可以讓執行計劃產生filter,即不展開,但一般情況下使用unnest hint無法消除filter。 如下SQL,找出庫中非唯一索引,那麼大家可能會這麼寫SQL: SELECT SEGMENT_NAME,SUM(BYTES/1024/1024) m FRO