精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

PostgreSQL 分區表,不是用來優化性能的!

admin
2025年1月15日 8:30 本文熱度 296

PostgreSQL 中的分區查詢性能,并不總會如你所愿。分區剪枝在特定情況下,是無法正常工作的。

示例

查詢執行中的分區剪枝,需要在某些條件下才會起作用。您需要有分區鍵上的索引,并且規劃器必須選擇嵌套循環來連接表。

CREATE TABLE partitioned_table (
  a int,
  b int,
  c int,
  p int
PARTITION BY RANGE (p);

CREATE TABLE p1 PARTITION OF partitioned_table FOR VALUES FROM (0TO (10);
CREATE TABLE p2 PARTITION OF partitioned_table FOR VALUES FROM (10TO (20);

INSERT INTO partitioned_table
  SELECT g.x, g.x, g.x, g.x FROM generate_series (0,19AS g(x);

CREATE INDEX ON partitioned_table(p);

CREATE TABLE other_table (
  p int,
  r int
);

INSERT INTO other_table
  SELECT 1, g.x FROM generate_series(1,100AS g(x);

VACUUM ANALYZE partitioned_table, other_table;
EXPLAIN (settings, analyzecosts offtiming offsummary off)
SELECT a, b, c
FROM partitioned_table
WHERE p IN (SELECT p FROM other_table WHERE r between 1 and 100);

                                       QUERY PLAN
-----------------------------------------------------------------------------------------
 Nested Loop (actual rows=1 loops=1)
   ->  HashAggregate (actual rows=1 loops=1)
         Group Key: other_table.p
         Batches: 1  Memory Usage24kB
         ->  Seq Scan on other_table (actual rows=100 loops=1)
               Filter: ((r >= 1AND (r <= 100))
   ->  Append (actual rows=1 loops=1)
         ->  Index Scan using p1_p_idx on p1 partitioned_table_1 (actual rows=1 loops=1)
               Index Cond: (p = other_table.p)
         ->  Index Scan using p2_p_idx on p2 partitioned_table_2 (never executed)
               Index Cond: (p = other_table.p)
(11 rows)

請注意,在分區 p2 上的索引掃描是不會執行的。

優化對分區表的訪問

大多數時候,開發者會抱有不切實際的期望,即如果他們對一個巨大的表進行分區,“對其進行查詢會更快”。而實際情況下,分區的目標和目的是方便維護,而不是查詢優化,如果短查詢的執行速度和分區前一樣,他們應該認為是成功的。這是沒有規則沒有例外的,雖然也有性能提升的情況,但那些確實是例外。

為了在分區后使查詢不變慢,開發者需要顯式地包含用于范圍分區的屬性值。很多時候,這個要求并不明顯,而且,它需要對正在使用的 SQL 語句進行重大改寫。

從一個應用開發者的角度來看,他們會這樣做:

SELECT a, b, c
FROM partitioned_table
WHERE p IN (SELECT p FROM other_table WHERE r between 1 and 100)

開發者可能會想當然地認為:我已經在查詢訪問特定的分區了!實際上,在執行開始之前,PostgreSQL 無法知道要查詢的將會是哪個分區!

那么,到底應該怎么做,才能讓 PostgreSQL 確切地知道要查詢哪個分區呢?一個肯定不壞的方法是,先計算出分區鍵的值,然后在查詢中使用它。


閱讀原文:原文鏈接


該文章在 2025/1/15 10:16:13 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产在线精品无码二区二区 | 久久精品a一国产成人免费网站 | 亚洲理论在线a中文字幕 | 欧洲亚州精品国产永久免费视频 | 亚偷熟乱区直播 | 日韩小视频在线播放 | 国产乱妇无码大黄AA片 | 亚洲制服丝袜中文字幕片区 | 国产午夜a理论毛 | 国产精品欧美日韩精品 | 在线涩涩免费观看国产精品 | 国产亚洲精品久久久闺蜜 | 免费现黄频在线观看国产 | 久久国产精品无码视欧美 | 亚洲成人成综合在线播放 | 麻豆乱码国产一区二区三区 | av中文字幕潮喷人妻系列 | 亚洲综合精品欧美性一级交视频 | 国产片av国语在线观看手机 | 亚洲人成在线免费观看 | 久久综合精品成人一本 | 亚洲午夜久久久精品影院 | 国产精品一区二区资源 | 午夜欧美精品久久久久久久 | 亚洲综合网国产福利精品一区 | 韩国帅男同志gaytv | 亚洲精品国产va在线观看 | 黑人强伦姧人妻日韩那庞大的 | 丰满人妻一区二区三区无码av | 无套内谢少妇毛片a片999高清日韩在线观看 | 在线观看的av免费网站 | 亚洲国产精品一区二区第一页 | 乱伦无码综合中文 | 亚洲 校园 春色 另类 图片 | 国产精品白浆无码流出在线看 | 四虎成人精品在永久免費 | 亚洲AV无码一区二区三区动漫 | 国产在线精品亚洲第一区香 | 亚洲色大成网址在线观看 | 国产精品人妻系列21P | A片人澡C片人人妻 |