人妻夜夜爽天天爽三区丁香花-人妻夜夜爽天天爽三-人妻夜夜爽天天爽欧美色院-人妻夜夜爽天天爽免费视频-人妻夜夜爽天天爽-人妻夜夜爽天天

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

PostgreSQL 分區(qū)表,不是用來優(yōu)化性能的!

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

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

示例

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

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)

請注意,在分區(qū) p2 上的索引掃描是不會(huì)執(zhí)行的。

優(yōu)化對分區(qū)表的訪問

大多數(shù)時(shí)候,開發(fā)者會(huì)抱有不切實(shí)際的期望,即如果他們對一個(gè)巨大的表進(jìn)行分區(qū),“對其進(jìn)行查詢會(huì)更快”。而實(shí)際情況下,分區(qū)的目標(biāo)和目的是方便維護(hù),而不是查詢優(yōu)化,如果短查詢的執(zhí)行速度和分區(qū)前一樣,他們應(yīng)該認(rèn)為是成功的。這是沒有規(guī)則沒有例外的,雖然也有性能提升的情況,但那些確實(shí)是例外。

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

從一個(gè)應(yīng)用開發(fā)者的角度來看,他們會(huì)這樣做:

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

開發(fā)者可能會(huì)想當(dāng)然地認(rèn)為:我已經(jīng)在查詢訪問特定的分區(qū)了!實(shí)際上,在執(zhí)行開始之前,PostgreSQL 無法知道要查詢的將會(huì)是哪個(gè)分區(qū)!

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


閱讀原文:原文鏈接


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

主站蜘蛛池模板: 精品国产人妻一区二区三区久久 | 精品国产一区二区三区香蕉沈先生 | 欧美久久网 | 久久久久成人精品一区二区 | 国产精品白浆无码 | 精品国产区一区二区三区在线观看 | 99久久免费只有精品国产高潮 | 久久精品国产亚洲αv忘忧草 | 国产精品免费av片 | 在线观看片免费人成视频播放 | 欧美特级特黄a大片免费 | 亚洲精品久久久久久不卡精品小说 | 91青青草久久 | 亚洲 暴爽 AV人人爽日日碰 | 少妇人妻系列无码专区系列免费观看 | 丰满人妻无码AV系列 | 韩国美女福利专区一区二区 | 久久免费区一区二区三波多野 | 精品亚洲av无码一区 | 日韩成人深夜在 | 高潮毛片无遮挡免费高清 | 精品国产三级a在线无码 | 成人a片一二三区免费观看乱码小说 | 亚洲av无码成h人动漫无广告 | 国产呻吟久久久久久久92 | 91人妻无码精品一区二区毛片 | 东京热无码人妻一区二区av | julia无码中文一二三区 | 亚洲一区综合图区 | 国产成人精品福利一区二区三区 | 漂亮的年轻的继坶3在线 | 91精品福利在线观看 | 国产精品女同一区二区 | chinese熟妇与小伙子mature | 国产视频一二三区 | 国产精品无码一区二区三区 | 91亚洲国产青草衣衣 | 18禁免费裸乳裸体视频网站 | 国产精品亚洲综合色区韩国 | 71婷婷综合精品一区二区三区 | 国产aⅴ夜夜欢一区二区三区 |