该sql加上limit 1 执行很慢
SELECT *
FROM t1
WHERE id = 999
AND (case $1
WHEN 'true' THEN
info = $2
ELSE info = $3 end)
查看表结构
db=# \d t1
Table "public.t1"
Column | Type | Collation | Nullable | Default
----------+-----------------------------+-----------+----------+---------
id | integer | | |
info | text | | |
crt_time | timestamp without time zone | | |
Indexes:
"idx_t1" btree (info)
info上存在索引,且数据不重复。
不加limit的执行计划如下:
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Limit (cost=0.56..3.18 rows=1 width=45) (actual time=0.027..0.027 rows=0 loops=1)
-> Index Scan using idx_t1 on t1 (cost=0.56..3.18 rows=1 width=45) (actual time=0.025..0.026 rows=0 loops=1)
Index Cond: (info = 'bill'::text)
Filter: (id = 999)
Planning Time: 0.158 ms