有一個表和一個 gin 索引,插入 1,000,000 個亂數。0 < 數量 < 100,000。
測驗兩個等效的查詢
create table Test
(
id serial primary key,
code varchar(255) not null
);
create index Test_code_gin on Test using gin (code gin_trgm_ops);
-- Test1
explain analyse
select * from Test where code like '1234';
-- Test2
explain analyse
select * from Test where code = '1234';
Test1 使用了 gin_trgm_ops 索引,執行時間:1.640 ms;
Test2 不使用索引,執行時間:24.531 ms;
我該怎么做才能讓 PostgreSQL 使用索引?還是修改ORM策略和我的SQL陳述句?或者干脆添加一個 BTree 索引?
uj5u.com熱心網友回復:
該功能是在 v14 中添加的。因此,您可以將 PostgreSQL 升級到 v14,然后將 pg_trgm 升級到其最新版本(使用 pg_upgrade 升級不會自動執行此操作)。
但我只想創建 btree 索引,因為它應該比使用三元組更快。僅僅為了訪問劣質實作而升級并不是勝利,除非索引所需的額外空間是無法忍受的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383292.html
標籤:PostgreSQL的 postgresql 性能 pg-trgm
