PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо PostgreSQL извършва последователно сканиране на индексирана колона?

Ако SELECT връща повече от приблизително 5-10% от всички редове в таблицата, последователното сканиране е много по-бързо от сканирането на индекс.

Това е така, защото сканирането на индекс изисква няколко IO операции за всеки ред (потърсете реда в индекса, след което извлечете реда от купчината). Докато последователното сканиране изисква само един IO за всеки ред - или дори по-малко, тъй като блок (страница) на диска съдържа повече от един ред, така че повече от един ред може да бъде извлечен с една IO операция.

Между другото:това е вярно и за други СУБД - някои оптимизации като "сканиране само на индекси" са взети настрана (но за SELECT * е много малко вероятно такава СУБД да се използва за "сканиране само за индекс")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между LATERAL JOIN и подзаявка в PostgreSQL?

  2. Как да получите PostgreSQL на VPS / Специализиран сървър

  3. Функцията се изпълнява по-бързо без STRICT модификатор?

  4. Извършване на промени в топологията на репликация за PostgreSQL

  5. Архитектура и настройка на паметта в PostgreSQL бази данни