Bonjour à tous,

J'ai lu que pour une recherche plus efficace dans une table, on pouvait faire plusieurs index avec des WHERE.

Par exemple, pour une table "books" avec les colonnes :
- id
- id_category
- title
- description

Au lieu de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
CREATE INDEX idx_books_description ON books USING gist(title gist_trgm_ops)
On pouvait faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
CREATE INDEX idx_books_description ON books USING gist(title gist_trgm_ops) WHERE id_category = 1;
CREATE INDEX idx_books_description ON books USING gist(title gist_trgm_ops) WHERE id_category = 2;
CREATE INDEX idx_books_description ON books USING gist(title gist_trgm_ops) WHERE id_category = 3;
etc.
Et après lorsque l'on va rechercher un titre, on place un "WHERE category = x" avant le code de recherche. Cela permet d'utiliser un index moins gros et donc d'améliorer les performances.

Je possède ces tables :

régions
- id
- name

rues
- id
- name

region_rues
- id
- id_region
- id_rue

Et j'aimerais tester l'indexation des rues en les décomposant par région.

Est-ce que c'est possible de faire ça ? Comment puis-je lier ces tables lors de la création de mon index ? Pouvez-vous me donner le code qui va bien, par exemple pour indexer selon la région d'index 1 (et je me débrouillerai pour faire les autres).

Merci par avance,

Bonne journée