尽管所有索引都已到位,但我的查询执行速度非常慢:
SELECT * FROM "entry"
INNER JOIN "entrytag" ON ("entry"."id" = "entrytag"."entry_id")
WHERE "entrytag"."tag_id" = 323456
ORDER BY "entry"."date"
DESC LIMIT 10'
Run Code Online (Sandbox Code Playgroud)
解释显示太多循环,为什么?如何解决这个问题?
Limit (cost=1241.85..1241.87 rows=10 width=666) (actual time=23576.449..23576.454 rows=10 loops=1)
-> Sort (cost=1241.85..1242.10 rows=99 width=666) (actual time=23576.446..23576.447 rows=10 loops=1)
Sort Key: entry.date DESC
Sort Method: top-N heapsort Memory: 31kB
-> Nested Loop (cost=0.87..1239.71 rows=99 width=666) (actual time=0.168..22494.187 rows=989105 loops=1)
-> Index Scan using entrytag_tag_id_row_idx on entrytag (cost=0.44..402.17 rows=99 width=4)
(actual time=0.093..535.664 **rows=989105** loops=1)
Index Cond: (tag_id = 323456)
-> …
Run Code Online (Sandbox Code Playgroud)