Postgresql
有沒有辦法在最早或最新的 postgres 分區中搜尋表?
背景
我正在開發一個具有用於搜尋的日期選擇器的 Web 應用程序。這些搜尋查詢分區表。到現在為止還挺好。但是,根據我查詢的數據,我們對提早日期選擇器沒有限制。我可以強加一個人為的、任意的值,但我寧願有一個快速查詢來獲取最早找到的分區表,也可能是最新的,而不知道這些分區的日期範圍,這樣我們就可以得到最早的找到日期。
分區是使用我認為每個月在 cron 作業中呼叫的函式創建的,該函式會創建一個月 + 1 個分區。它們以時間戳命名,但僅使用年和月。
問題
有什麼東西可以讓我這樣做(虛擬碼):
select min(date_column) from parted_table.earliest_partition;
例如,如果從 2018 年開始每個新月創建一個月表分區,我希望
earliest_partition
是table_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