Postgresql

有沒有辦法在最早或最新的 postgres 分區中搜尋表?

  • April 5, 2022

背景

我正在開發一個具有用於搜尋的日期選擇器的 Web 應用程序。這些搜尋查詢分區表。到現在為止還挺好。但是,根據我查詢的數據,我們對提早日期選擇器沒有限制。我可以強加一個人為的、任意的值,但我寧願有一個快速查詢來獲取最早找到的分區表,也可能是最新的,而不知道這些分區的日期範圍,這樣我們就可以得到最早的找到日期。

分區是使用我認為每個月在 cron 作業中呼叫的函式創建的,該函式會創建一個月 + 1 個分區。它們以時間戳命名,但僅使用年和月。

問題

有什麼東西可以讓我這樣做(虛擬碼):

select min(date_column) from parted_table.earliest_partition;

例如,如果從 2018 年開始每個新月創建一個月表分區,我希望earliest_partitiontable_2018_01

select min(date_column) from table_2018_01

table_2018_01如果不知道 2018_01 是最早創建的分區,我怎麼會得到?

披露:我正在使用其他人的程式碼,所以我對系統並不完全熟悉。

postgres 9.4

tl;博士我想我正在尋找的是一個搜尋表名並返回最早的查詢。應該可以通過一些內置的 pg_ 表來實現嗎?

首先,非常感謝那些評論並幫助我得到這個答案的人。我沒有像發布問題那樣詳細。我相信這是我尋求的答案:

select table_name from information_schema.tables where table_name like 'table_%' order by table_name limit 1;

table考慮到我們使用的命名約定,它應該返回最早的分區名稱。

假設您已經使用 Postgres 的繼承實現了分區,您可以使用系統列tableoid 來做到這一點:

select tableoid::regclass, date_column 
from parted_table
order by date_column
limit 1

引用自:https://dba.stackexchange.com/questions/242487