Quels sont les plus grands avantages de l'utilisation d'INDEXES dans mysql?
Je sais que j'ai besoin d'avoir une clé primaire définie, et à régler quoi que ce soit qui doit être unique comme une clé unique, mais qu'est ce qu'un INDICE et comment dois-je les utiliser?
Quels sont les avantages? Pour & Cons? Je remarque que je peut soit les utiliser ou pas, quand devrais-je?
source d'informationauteur Basic
Vous devez vous connecter pour publier un commentaire.
Réponse courte:
Les indices de vitesse jusqu'
SELECT
's et de ralentirINSERT
'.Habituellement, il est préférable d'avoir des indices, car ils accélèrent
select
plus qu'ils ralentissentinsert
.Sur un
UPDATE
l'indice peut accélérer les choses jusqu' si un champ indexé, est utilisé dans lesWHERE
clause et de ralentir les choses si vousupdate
l'un des champs indexés.Comment savez-vous quand utiliser un index
Ajouter
EXPLAIN
en face de votreSELECT
déclaration.Comme:
Va vous montrer comment beaucoup de travail MySQL aurez à faire sur chacun des champs non indexés.
À l'aide de que les informations que vous pouvez décider si cela vaut la peine d'ajouter des index ou pas.
Expliquer peut également vous dire si il est mieux de laisser tomber et de l'indice de
Si très peu de lignes sont sélectionnées, ou MySQL décidé de ignorer l'indice (il n'est que de temps en temps)alors vous pourriez aussi bien supprimer l'index, car il est ralentir votre
insert
s mais pas la vitesse de votreselect
'.Puis, de nouveau, il peut être aussi que votre instruction select n'est pas assez intelligent.
(Désolé pour la complexité de la réponse, j'ai essayé de garder les choses simples, mais n'a pas).
Lien:
Index MySQL - quelles sont les meilleures pratiques?
Pour:
Plus rapide de recherche des résultats. Ce est tout au sujet de réduire le nombre d'e /s de Disque. Au lieu de numériser l'ensemble de la table pour les résultats, vous pouvez réduire le nombre d'e /s de disque(page extrait) à l'aide de l'indice des structures telles que les B-Arbres ou Hash Index pour obtenir vos données plus rapide.
Contre:
Plus lent écrit(peut-être). Non seulement vous avez à écrire les données de votre table, mais vous devez également écrire à votre index. Cela peut entraîner le système à la restructuration de la structure de l'index(Index de Hachage, B-Arbre, etc), ce qui peut être très gourmand en ressources.
Prend plus d'espace disque, naturellement. Vous êtes de stocker plus de données.
La façon la plus simple de penser à propos d'un index est de penser à un dictionnaire. Il a les mots et il a des définitions correspondant à ces mots. Le dictionnaire a un index sur la "parole" parce que quand vous allez dans un dictionnaire que vous souhaitez rechercher un mot rapidement, puis obtenir sa définition. Un dictionnaire contient généralement juste un index un index par mot.
Une base de données est analogue. Quand vous avez un groupe de données dans la base de données, vous aurez certaines façons que vous souhaitez obtenir. Disons que vous avez une table Utilisateur et souvent, vous rechercher un utilisateur par le nom de la colonne. Depuis, c'est une opération que vous faites souvent dans votre application, vous devez envisager d'utiliser un index sur cette colonne. Qui permettra de créer une structure dans la base de données qui est trié, si vous voulez, en fonction de cette colonne, de sorte que la recherche de quelque chose par son prénom, c'est comme la recherche d'un mot dans un dictionnaire. Si vous n'avez pas de cet index, vous pourriez avoir besoin de regarder TOUTES les lignes avant de vous déterminer ceux qui ont un Prénom. Par l'ajout d'un index, vous avez fait de ce rapide.
Alors pourquoi ne pas mettre un index sur toutes les colonnes et les faire vite? Comme pour tout, il ya un compromis. Chaque fois que vous insérez une ligne dans la table Utilisateur, la base de données devra effectuer sa magie et de trier tout sur votre colonne indexée. Cela peut être coûteux.
Vous n'avez pas ont pour avoir une clé primaire. Index (de tout type) sont utilisés afin d'accélérer les requêtes et, au moins avec le moteur MyISAM, de faire respecter les contraintes de clé étrangère. Si vous utilisez un unique ou de la plaine (non-unique) indice dépend si vous souhaitez autoriser les valeurs en double dans la clé.
Il s'agit d'un concept de base de données, vous pouvez utiliser des ressources externes pour la lire, comme http://beginner-sql-tutorial.com/sql-index.htm ou http://en.wikipedia.org/wiki/Index_(base de données)
Un index permet de MySQL pour trouver des données plus rapide. Vous les utilisez sur les colonnes que vous allez utiliser dans
WHERE
clauses. Par exemple, si vous avez une colonne nomméescore
et que vous voulez trouver tout oùscore > 5
par défaut, cela signifie MySQL aurez besoin de parcourir TOUTE la table pour trouver ces scores. Toutefois, si vous utilisez un index BTREE, trouver ceux qui répondent à cette condition BEAUCOUP plus rapide.Indices ont un prix: espace disque et mémoire. Si c'est une très grande table, votre indice de croître assez grand.
Pensez-y de cette façon: quels sont les principaux avantages d'avoir un index dans un livre? C'est la même chose. Vous avez un peu plus grand, livre, cependant, vous êtes en mesure de consulter rapidement les choses. Lorsque vous créez un index sur une colonne, vous voulez dire que vous voulez être en mesure de le référencer dans une clause where pour le chercher rapidement.