回答

收藏

为什么PostgreSQL在此查询中不使用索引

技术问答 技术问答 197 人阅读 | 0 人回复 | 2023-09-12

这是一个完整的表定义:: h2 S/ q( w* l1 x% W8 i0 I
CREATE TABLE search.tablename(  id integer NOT NULL, name character varying(300) NOT NULL, CONSTRAINT tablename_pkey PRIMARY KEY (id))WITH (  OIDS=FALSE);CREATE INDEX tablename_name_idx  ON search.tablename  USING btree  (name COLLATE pg_catalog."default");只有手动操作才能吸尘/分析73000行左右。3 s+ h' q6 q" ]3 a
我不明白为什么这个琐碎的查询8 f$ F( z4 q) W" [8 H* z0 g' ~
SELECT *   FROM "tablename" AS "arn"  WHERE arn.name LIKE 'foo%'不要使用相应的索引。7 Q, s# H1 ^9 C6 G' K& u
查询的执行计划是( b" E  b5 N9 R2 {3 z0 O0 v
Seq Scan on tablename arn  (cost=0.00..1626.96 rows=7 width=47) (actual time=8.682..8.682 rows=0 loops=1)  Filter: ((name)::text ~~ 'foo%'::text)  Rows Removed by Filter: 73197Total runtime: 8.703 ms有人可以指出我所缺少的吗?/ }3 }- {2 ~1 p! R8 L9 }
UPD    :列出名称类型text为什么不改变呢?
3 E: L* R: {- F! x1 t: H2 a3 Q3 k" lUPD 2    :name = 'foo所谓词预期使用索引' Y8 _# v8 U) G
                                                               
( p3 K" O* F& c    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则