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

Съставен индекс с три ключа, какво се случва, ако прескоча средния в заявката?

Postgres може да използва неводещи колони в индекс на b-дърво, но в много по-малко ефективен режим.

Ако първата колона е много избирателна (само няколко реда на A ), тогава едва ли ще забележите разлика в производителността, тъй като и двата метода за достъп (дори последователно сканиране върху намаления набор) са евтини. Ударът на производителността нараства с броя на редовете на A .

За случая, който описвате, предлагам да създадете индекс на (A, C, B) или (C, A, B) (само се уверете, че B идва на последно място), за да оптимизирате производителността. По този начин получавате най-добра производителност за заявки за (A, B, C) и на (A, C) еднакви.

За разлика от последователността от колони в индекса, последователността от предикати в заявката няма значение.

Обсъдихме това много подробно на dba.SE:

Обърнете внимание, че го правине има значение дали водите с A, C или C, A за конкретния случай:

Има и някои други съображения, но вашият въпрос не съдържа всички уместни подробности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - Множеството присъединявания карат моята заявка да връща неправилни данни

  2. Как pg_sleep() работи в PostgreSQL

  3. grake db:create хвърля база данни не съществува грешка с postgresql

  4. Съвети и трикове за Postgres

  5. Показване на всички резултати в postgresql?