Je ne sais pas beaucoup sur l'optimisation des bases de données, mais je suis en train de comprendre ce cas.Indice unique sur deux colonnes plus un index séparé sur chacune d'elles?
Dire que j'ai le tableau suivant:
cities
===========
state_id integer
name varchar(32)
slug varchar(32)
Maintenant, dis que je veux effectuer des requêtes comme ceci:
SELECT * FROM cities WHERE state_id = 123 AND slug = 'some_city'
SELECT * FROM cities WHERE state_id = 123
Si je veux le « limaces » pour une ville d'être unique au sein de son état particulier, j'ajouterais un index unique sur state_id et slug.
Est-ce suffisant indice? Ou devrais-je aussi ajouter un autre sur state_id afin que la deuxième requête soit optimisée? Ou la deuxième requête utilise-t-elle automatiquement l'index unique?
Je travaille sur PostgreSQL, mais je sens que ce cas est si simple que la plupart des SGBD fonctionnent de la même.
Aussi, je sais que cela ne fait pas sûrement une différence sur les petites tables, mais mon exemple est simple. Pensez aux tables de 200k + lignes.
Merci!
Il semble que ce sujet est plus complexe que je ne le pensais. Merci à tous pour votre participation. – Ivan