我有一个名为 nickname 的列并为其创建了索引。
create index test_idx on test_table using btree (nickname);
我的查询是,
select * from test_table where nickname ilike '%pga%';
test_table 有大约 100k 条记录。当我做解释时,我得到了一些与创建索引之前相同的成本。这是为什么。?
(使用 PostgreSQL 9.2)
编辑 1:
昵称列是字符变化的(100)
LIKE
在表达式开头带有通配符的不能使用 btree 索引。为了使该查询使用索引,您需要创建一个 trigram 索引,您需要首先为其安装pg_trgm扩展。