Dans MySQL, lorsque je crée une clé primaire composite, par exemple avec les colonnes X, Y, Z
, les trois colonnes deviennent automatiquement des index. Est-ce la même chose pour Postgres?Clé primaire composite PostgreSQL
Répondre
Si vous créez une clé primaire composite, sur (x, y, z)
, PostgreSQL l'implémente à l'aide d'un index multi-colonnes UNIQUE sur (x, y, z)
. En outre, les trois colonnes doivent être NOT NULL
, ce qui est la principale différence entre un PRIMARY KEY
et un UNIQUE INDEX
.
Outre les restrictions évidentes sur vos données, le multi-column index a également un effet quelque peu différent sur les performances des requêtes que trois indices individuels sur x
, y
et z
.
Nous avons eu une discussion très approfondie à ce sujet récemment on dba.SE in this related question. Avec des exemples, des repères, des discussions et des perspectives à la prochaine fonctionnalité de index-only scans in version 9.2.
En particulier, une clé primaire sur (x, y, z)
va accélérer les requêtes avec des conditions sur x
, (x,y)
ou (x,y,z)
de façon optimale. Il aidera également avec des requêtes sur y
, z
, (y,z)
ou (x,z)
mais dans une mesure beaucoup moindre.
Si vous devez accélérer les requêtes sur ces dernières combinaisons, vous pouvez créer un ou plusieurs index supplémentaires.
Yes:
PostgreSQL crée automatiquement un index unique quand une contrainte unique ou de clé primaire est définie pour une table. L'index couvre les colonnes qui composent la clé primaire ou la contrainte unique (un index multicolonne, le cas échéant) et constitue le mécanisme qui applique la contrainte.
Je pense que la question était de savoir si chaque colonne obtient son propre index. –
D'accord. La question n'est pas de savoir si 1 index multicolonne est créé automatiquement mais bien si 3 index à une seule colonne sont créés. Et la réponse est non. Votre réponse est toujours pertinente car elle fournit des informations supplémentaires, après avoir été édité bien sûr. En fait, la réponse de @ dondi-michael-stroma est plus pertinente que celle qui a été choisie par le demandeur d'origine. – Chucky
Non, vous obtenez un index pour la clé primaire à trois colonnes.
- 1. JPA composite clé primaire
- 2. jqGrid composite clé primaire
- 3. clé primaire composite mySQL
- 4. Clé primaire composite Mysql
- 5. Requête clé primaire composite
- 6. NHibernate composite clé primaire
- 7. Clé primaire composite modifiable
- 8. PostgreSQL bytea Clé primaire
- 9. Clé primaire composite dans mongoengine
- 10. OneToMany scénario clé composite primaire
- 11. Clé primaire composite en cascade
- 12. Scénario de clé primaire composite
- 13. Limite de clé primaire composite?
- 14. Clé étrangère vers la clé primaire composite
- 15. clé primaire composite avec clé étrangère
- 16. Clé primaire composite et index supplémentaires
- 17. Clé composite primaire et étrangère jpa
- 18. EFCodeFirst clé primaire composite ctp 5
- 19. Réorganiser la clé primaire composite dans sqlalchemy
- 20. JPA Composite primaire génération de clé
- 21. Problèmes d'hibernation avec la clé primaire composite
- 22. Clé primaire composite/Maux de tête étrangers
- 23. Doctrine2 clé primaire composite oneToOne non nullable
- 24. ressort reste contrôleur composite clé primaire
- 25. Demande SQL avec clé primaire composite
- 26. comment modifier table de clé primaire composite
- 27. Clé primaire composite avec attributs non primitifs
- 28. Clé primaire composite utilisant newid et newsequentialid
- 29. Java Hibernate - Problème clé primaire composite
- 30. ADO.NET Entity Framework - CRUD clé primaire composite
Voulez-vous dire que MySQL crée ** trois ** * index *? Semble terriblement étrange –