У меня проблемы с запросом выбора, это простой запрос для выбора самой последней строки в таблице, но планировщик запросов делает что-то странное.
SELECT id FROM plots WHERE fk_id='73a711a5-cb31-545d-b8d6-75c2a0e3ba9d' ORDER BY created_at DESC LIMIT 1
Limit (cost=0.43..155.97 rows=1 width=24)
-> Index Scan Backward using idx_plot_created_at on plots (cost=0.43..304694.48 rows=1959 width=24)
Filter: (fk_id = '73a711a5-cb31-545d-b8d6-75c2a0e3ba9d'::uuid)
И это занимает около 2, 8 секунд, чтобы выполнить.Но когда я удаляю order by и limit, он использует индекс в поле fk_id и возвращает 6 результатов за 102 мс.Разве Postgresql не должен просто прочитать 6 результатов, используя индекс fk_id, и упорядочить их по полю созданного?Вместо этого он, похоже, сканирует таблицу, используя индекс в поле, которое используется для предложения ORDER BY, и затем проверяет каждую строку с условием Filter.Почему он это делает?