Мне нужно запрашивать данные, сгенерированные вчера, каждое утро с помощью сценария.
Запрос похож на
select xxx
from table
where create_time >= current_date - 1
and create_time < current_date
limit 10;
Его план запроса:
QUERY PLAN
------------------------------------------------------------------------------------
Limit (cost=100.00..117.64 rows=3 width=138)
-> Foreign Scan on table (cost=100.00..117.64 rows=3 width=138)
Вышеупомянутый запрос занимает очень много времени.
Однако, когда я использую фиксированное время, как показано ниже, он немедленно возвращает результаты ...
select xxx
from table
where create_time >= '2020-07-30 00:00:00'
and create_time < '2020-08-03 00:00:00'
limit 10;
Его план запроса: 10;
QUERY PLAN
----------------------------------------------------------------------------------------
Limit (cost=100.00..131.46 rows=3 width=138)
-> Foreign Scan on table (cost=100.00..131.46 rows=3 width=138)
Filter: ((create_time < CURRENT_DATE) AND (create_time >= (CURRENT_DATE - 1)))
В чем разница? А как ускорить 1-й запрос?