我正在閱讀 Markus Winand 的幻燈片:
://www.slideshare.net/MarkusWinand/indexes-neglectedperformanceallrounder
我通過以下步驟對此進行了測驗:
- 使用 column_1 整數和 column_2 整數創建表
- 運行以下命令:
INSERT INTO dev.table_name(column_1, column_2)
SELECT RANDOM() * 10, RANDOM() * 10 FROM generate_series(1, 10000);
create index idx on dev.table_name(column_1, column_2);
explain (buffers, analyze, verbose) select * from dev.table_name where column_2=2;
explain (buffers, analyze, verbose) select * from dev.table_name where column_1=2;
explain (buffers, analyze, verbose) select * from dev.table_name where column_1=2 and column_2= 2;
但是,column_1 和 column_2 的查詢使用僅索引掃描而不是 column_1 使用索引,column_2 使用順序掃描,正如幻燈片中所預期的那樣

我的問題是如何測驗列順序的重要性?這不作業,因為我使用整數列?我嘗試使用sync && sudo purgeas 和洗掉快取discard all,但還是一樣。
uj5u.com熱心網友回復:
索引有助于大海撈針。他們在針墊中尋找針頭時并不那么出色。
您應該使條件更具選擇性,并使表格更大。
INSERT INTO dev.table_name(column_1, column_2)
SELECT RANDOM() * 1000, RANDOM() * 1000 FROM generate_series(1, 1000000);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433983.html
標籤:PostgreSQL 索引
上一篇:如何更改查詢以檢查表是否為空
