Просто другая библиотека.
Посморите, если вас устраивает набор функциональности библиотеки, то используте её.
pyTelegramBotAPI - не использовал, сказать что-то про неё не могу.
1. В PostgreSQL нет понятия покрывающих индексов. Данная функциональность только внедряется и не работает на 100%.
2. В PostgreSQL есть частичные индексы и Melkij тут совершенно прав, загнав статичное условие в частичный индекс. Не считая того, что условие ">=" в принципе потребует Recheck Condition. А update_date на селективность влияет ровно никак, так как по нему ведется сортировка, а значит это поле должно быть последним по определению, так работает планировщик PostgreSQL
Правило сортировки в индексе в данном случае не влияет, так как планировщику все же дешевле сначала отфильтровать по job_id из-за его достаточной "селективности" что не сложно увидеть по планам запросов.
Если бы rows которые реально выбраны и "Rows removed by filter" были бы хотя бы в одних порядках, то можно было бы говорить об использовании индекса исключительно по "time" в принципе.
Кстати да, статистику по таблице желательно обновить:
Посморите, если вас устраивает набор функциональности библиотеки, то используте её.
pyTelegramBotAPI - не использовал, сказать что-то про неё не могу.