У меня есть таблица с 4.5 миллионами строк. Первичного ключа нет. Таблица имеет столбец p_id
, тип integer. Там индекс, idx_mytable_p_id
в этом столбце, используя метод btree
. Я:
SELECT * FROM mytable WHERE p_id = 123456;
Я объясню это и посмотрю следующий результат:
Bitmap Heap Scan on mytable (cost=12.04..1632.35 rows=425 width=321)
Recheck Cond: (p_id = 543094)
-> Bitmap Index Scan on idx_mytable_p_id (cost=0.00..11.93 rows=425 width=0)
Index Cond: (p_id = 543094)
Вопросы:
- Почему этот запрос выполняет сканирование кучи, а затем сканирование растрового индекса?
- Почему он просматривает 425 строк? Почему ширина операции 321?
- Какова стоимость 12.04..1632.35 и 0.00..11.93, говорящая мне?
Для записи есть 773 строки с p_id
значением 123456. На mytable
имеется 38 столбцов.
Спасибо!