全文检索 (不包含、不等于) 索引优化 - 阿里云RDS PostgreSQL最佳实践
背景 PostgreSQL内置了GIN索引,支持全文检索,支持数组检索等多值数据类型的检索。 在全文检索中,不包含某个关键字能用到索引吗? 实际上GIN是倒排索引,不包含某个关键字的查询,实际上是跳过主tree上面的TOKEN的扫描。 只要被跳过的TOKEN包含了大量数据,那么就是划算的。PostgreSQL是基于CBO的执行计划优化器,所以会自动选择最优的索引。 例子1,全文检索不包含查询 1、创建测试表 postgres=# create table notcontain (id int, info tsvector); CREATE TABLE 2、创建生成随机字符串的函数 CREATE OR REPLACE FUNCTION gen_rand_str(integer) RETURNS text LANGU