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

Разбиране на растерни индекси в postgresql

Растерното изображение на страниците се създава динамично за всяка заявка. Не се кешира или използва повторно и се изхвърля в края на сканирането на растерния индекс.

Няма смисъл да създавате растерно изображение на страницата предварително, защото съдържанието му зависи от предикатите на заявката .

Да кажем, че търсите x=1 and y=2 . Имате b-дърво индекси на x и y . PostgreSQL не комбинира x и y в растерно изображение, след което потърсете в растерното изображение. Той сканира индекс x за адреса на страницата на всички страници с x=1 и прави растерно изображение, където страниците, които може да съдържат x=1 са верни. След това сканира y търси адресите на страниците, където y може да е равно на 2 , правейки растерно изображение от това. След това им прави И, за да намери страници, където и двете x=1 и y=2 може да е вярно. Накрая сканира самата таблица, като чете само страниците, които може да съдържат стойности на кандидати, чете всяка страница и запазва само редовете, където x=1 and y=2 .

Сега, ако търсите нещо като кеширан, предварително изграден растерен индекс, има такова нещо в PostgreSQL 9.5:BRIN индекси . Те са предназначени за много големи таблици и предоставят начин за намиране на диапазони от таблицата, които могат да бъдат прескочени, тъй като е известно, че не съдържат желана стойност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Необходимо е да се създаде тригер, който увеличава стойност в таблица след вмъкване

  2. PostgreSQL:подреждане по колона, със специфична NON-NULL стойност LAST

  3. Как да използвам array_agg() за varchar[]

  4. Грешка при зареждане на споделени библиотеки:libpq.so.5:не може да се отвори споделен обектен файл:Няма такъв файл или директория

  5. Как да задам часова зона на postgresql jdbc връзка, създадена от flyway?