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 :
On pouvait 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)
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.
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.
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
Partager