2016-11-24 3 views
0


J'utilise Postgres DB et j'ai une table appelée MyObjects avec plusieurs colonnes varchar. Les valeurs ne seront pas des mots séparés (par exemple, urls, noms etc.). Je filtrerai beaucoup selon ces colonnes. Recherche dans les lignes qu'un certain mot correspondra au début, au milieu ou à la fin de la valeur. La table elle-même ne sera pas grande (le nombre de lignes au début sera autour de n * 10^3 mais il deviendra n * 10^5 lignes) Y a-t-il besoin d'un index dans ce cas? ? Si oui, quel type d'indice suggérez-vous?
Merci!Indice BTREE vs GIN vs GIST

Répondre

0

Si vous recherchez un index qui peut aider avec des modèles de recherche comme WHERE col LIKE '%string%', la seule option est un index GIN ou GiST utilisant pg_tgrm.

Ces index peuvent devenir assez volumineux et ils ne sont pas très utiles si vous recherchez des sous-chaînes courtes. Pour savoir si un tel index apporterait des avantages sur un balayage de table séquentiel dans votre cas, vous devez l'essayer – il ne peut pas être répondu en général.