Intereting Posts
Ошибка запроса sql Hibernate с использованием экземпляра javax.sql.DataSource SQL-инъекция для моего PHP-сайта Технология Oracle SQL, чтобы избежать заполнения журнала Как удалить столбец из представления Поиск записей с полем даты за последние 24 часа Поиск по порядковым номерам DataReader по сравнению с именованными поисковыми запросами Запрос для «запуска» последовательных столбцов в Postgres Каковы способы переноса данных старше, чем «Y» дней в таблицу архива / истории в MySQL? Почему этот триггер не срабатывает? В нем указан недопустимый идентификатор Зачем нам нужна GROUP BY с AGGREGATE FUNCTIONS? Вопрос MySQL. Как обрабатывать несколько типов пользователей – одну таблицу или несколько? Как преобразовать горизонтальные данные в вертикальные от базы данных к datagridview в c # MySQL: как программно определить отношения внешнего ключа? Использование sql-функции generate_series () в redshift

Почему Postgres не использует индекс?

У меня есть таблица с целым столбцом с именем account_id . У меня есть указатель на этот столбец.

Но похоже, что Postgres не хочет использовать мой индекс:

 EXPLAIN ANALYZE SELECT "invoices".* FROM "invoices" WHERE "invoices"."account_id" = 1; Seq Scan on invoices (cost=0.00..6504.61 rows=117654 width=186) (actual time=0.021..33.943 rows=118027 loops=1) Filter: (account_id = 1) Rows Removed by Filter: 51462 Total runtime: 39.917 ms (4 rows) 

Любая идея, почему это было бы?

Из-за:

 Seq Scan on invoices (...) (actual ... rows=118027 <— this Filter: (account_id = 1) Rows Removed by Filter: 51462 <— vs this Total runtime: 39.917 ms 

Вы выбираете так много строк, что дешевле читать всю таблицу.

Связанные ранее вопросы и ответы с сегодняшнего дня для дальнейшего чтения:

  • Почему Postgresql не использует индекс для запроса IN?

  • Postgres использует неверный индекс при запросе на просмотр индексированных выражений?

(См. Также более длинный ответ Крейга на втором для дополнительных примечаний по тонкостям индексов.)