Question

Ce que je veux dire est: Est-ce une table avec 20 colonnes bénéficient plus de l'indexation d'un certain champ (celui qui est utilisé dans les requêtes de recherche-ish) qu'une table qui a seulement 4 colonnes

Aussi: Quel est le mal à ajouter l'index aux champs que je ne recherche pas beaucoup, mais pourrait plus tard dans l'avenir? Y at-il un négatif à l'ajout d'indices? Est-ce juste la taille qu'il prend sur le disque, ou peut-il rendre les choses fonctionnent plus lent à ajouter des index inutiles?

extrait d'un commentaire

J'utilise Postgres (dernière version) et j'ai une table que je vais faire beaucoup de requêtes de type LIKE, etc, mais les valeurs changeront sans doute souvent que mes clients ont accès à CRUD. Si je peux l'idée d'indices? Sont-ils juste un mal de tête?

Était-ce utile?

La solution

  

Est-ce une table avec 20 colonnes bénéficient plus de l'indexation d'un certain champ (celui qui est utilisé dans les requêtes de recherche-ish) qu'une table qui a seulement 4 colonnes?

n, le nombre de colonnes dans une table n'a aucune incidence sur les avantages d'avoir un indice.

Un index est uniquement sur les valeurs dans la colonne (s) spécifié; c'est la fréquence des valeurs qui auront un impact sur le montant des prestations de vos requêtes verront. Par exemple, une colonne contenant une valeur booléenne est un mauvais choix pour l'indexation, car il est une chance 50/50 la valeur sera l'un ou l'autre valeur. A 50/50 sur toutes les lignes, l'index ne restreint pas la recherche d'une ligne particulière.

  

Quel est le mal à ajouter l'index aux champs que je ne recherche pas beaucoup, mais pourrait plus tard dans l'avenir?

index accélèrent seulement jusqu'à la récupération de données quand ils peuvent être utilisés, mais leur impact négatif sur la vitesse des INSERT / UPDATE / DELETE. Les indices ont également besoin d'entretien pour maintenir leur valeur.

Autres conseils

Si vous faites comme des requêtes, vous pouvez constater que les index ne sont pas pas beaucoup d'aide de toute façon. Alors qu'un indice pourrait améliorer cette requête ...

select * from t23
where whatever like 'SOMETHING%'
/

... il est peu probable qu'un indice aidera à l'une de ces requêtes ...

select * from t23
where whatever like '%SOMETHING%'
/

select * from t23
where whatever like '%SOMETHING'
/

Si vous avez des champs de texte libre et vos utilisateurs ont besoin d'un appariement flou alors vous devriez regarder toutes les fonctionnalités de texte de Postgres. Cela utilise l'opérateur MATCH plutôt que LIKE et qui nécessite un type d'index spécial. En savoir plus.

Il y a une chasse aux sorcières, qui est que les index en texte intégral sont plus complexes que la normale, et décisions de conception liées ne sont pas simples . En outre, certaines implémentations exigent activités de maintenance supplémentaires .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top