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

Какво да индексирате при заявки с много колони в клаузата WHERE

Трябва да разберете какво WHERE клаузи, които ще използвате с тази заявка, колко често ще се среща всяка и колко селективно ще бъде всяко условие.

  • Не индексирайте за заявки, които се случват рядко, освен ако не се налага.

  • Използвайте индекси с няколко колони, като започнете с онези колони, които ще се появят в = сравнение.

  • Що се отнася до реда на колоните в индекс с няколко колони, започнете с онези колони, които ще се използват сами в заявка (индекс може да се използва за заявка само с някои от колоните, при условие че са в началото на индекса).

  • Може да пропуснете колони с ниска селективност, като gender .

Например, с горните ви заявки, ако всички са чести и всички колони са селективни, тези индекси биха били добри:

... ON apartments (city_id, rooms, size)

... ON apartments (area_id, ad_type, price)

... ON apartments (area_id, ad_type, published_at)

Тези индекси могат също да се използват за WHERE клаузи само с area_id или city_id в тях.

Лошо е да имате твърде много индекси.

Ако горният метод би довел до твърде много индекси, напр. защото потребителят може да избира произволни колони за WHERE клауза, по-добре е да индексирате отделни колони или понякога двойки колони, които редовно вървят заедно.

По този начин PostgreSQL може да избере сканиране на индекс на растерно изображение за комбиниране на няколко индекса за една заявка. Това е по-малко ефективно от обикновеното сканиране на индекс , но обикновено по-добре от последователно сканиране .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталирайте libpq-dev на Mac OS X

  2. В Django 1.9 каква е конвенцията за използване на JSONField (роден postgres jsonb)?

  3. Postgres JDBC връзка в Eclipse Help

  4. Връщане като масив от JSON обекти в SQL (Postgres)

  5. Опит за промяна на ограничение в PostgreSQL