POSTGRESQL分割槽表模式下查詢效率測試

2021-10-10 10:10:04 字數 1656 閱讀 3998

create table sheet_sale_main_test_20072102 partition of sheet_sale_main_test for values from (『2020-07-01』) to (『2021-03-01』);

create table sheet_sale_main_test_21032106 partition of sheet_sale_main_test for values from (『2021-03-01』) to (『2021-06-01』);

create table sheet_sale_main_test_21062201 partition of sheet_sale_main_test for values from (『2021-06-01』) to (『2022-01-01』);

create table sheet_sale_main_test_22012301 partition of sheet_sale_main_test for values from (『2022-01-01』) to (『2023-01-01』);

create table sheet_sale_main_test_23012401 partition of sheet_sale_main_test for values from (『2023-01-01』) to (『2024-01-01』);

create table sheet_sale_main_test_24012501 partition of sheet_sale_main_test for values from (『2024-01-01』) to (『2025-01-01』);

create table sheet_sale_main_test_25012601 partition of sheet_sale_main_test for values from (『2025-01-01』) to (『2026-01-01』);

create table sheet_sale_main_test_26012701 partition of sheet_sale_main_test for values from (『2026-01-01』) to (『2027-01-01』);

create table sheet_sale_main_test_27013001 partition of sheet_sale_main_test for values from (『2027-01-01』) to (『2030-01-01』);

create table sheet_sale_main_test_30013301 partition of sheet_sale_main_test for values from (『2030-01-01』) to (『2033-01-01』);

執行該語句一次插入從2021-1-11開始,每一秒產生一條記錄,360天產生3000多萬條記錄,大約90秒可以完成插入。這樣連續插入3年資料,大約1億多條。

select * from sheet_sale_main where sheet_id=145667

查詢時間需要40秒。

驗證猜想1:分割槽表查詢條件必須指定分割槽鍵,否則會很慢(證明是錯的)

驗證猜想2:分割槽表按某日期列查詢最早或最後的記錄會掃瞄所有分割槽,所以會很慢

查詢某客戶最後一次購買記錄
結論:postgresql不愧是效能怪獸,對大表查詢效率非常高

Postgresql之分割槽表

參考 建立步驟 注意 以下針對10.0版本之前的用法,新版本見 1 建立主表。不用為該錶定義任何檢查限制,除非需要將該限制應用到所有的分割槽表中。同樣也無需為該錶建立任何索引和唯一限制。create table almart date key date,hour key smallint,clien...

postgresql中的分割槽表

在早期的版本中pg中的分割槽表都是通過繼承的方式建立的,通過繼承的方式來建立分割槽表的這種方式用起來不是很方便。mydb create table parent id int primary key,name varchar 100 create table mydb create index id...

PostgreSQL父子表和分割槽表對比

從整體上來看,子表和分割槽表有相同的地方也有差別,因為都使用了繼承的特性,所以本質上是一樣的。下面看一下二者的區別 1.父子表 建立父表 create table cities name text,population float,altitude int 建立子表 create table cap...