2011-08-16 5 views
0

y aura-t-il des différences de performance entre ces 2 requêtes?Mysql Où requête performance?

SELECT * FROM cats WHERE cats_id = '1' 
SELECT * FROM cats WHERE cats_name = 'cats_name' 

concernant

+1

pourquoi voulez-vous savoir? Quels sont les types et les tailles de colonnes? les colonnes sont-elles indexées? –

+0

Dépend de l'indexation. –

+0

En plus de l'indexation, cela dépend aussi des types de données - _id implique généralement une valeur numérique - mais vous avez une chaîne entre guillemets qui pourrait perturber l'optimiseur – symcbean

Répondre

2

Cela dépend de l'existence d'un index sur les champs.

Si le champ cats_id est un champ de clé primaire et cats_name est un champ varchar sans index, la première requête sera certainement plus rapide.

Si vous souhaitez améliorer les performances du champ cats_name, envisagez de créer un index.

+0

Je veux garder certaines données hors de mysql. s'il n'y a pas beaucoup de différence je veux aller pour la deuxième option. 'cats_name' est varchar 100 et a l'index. – emre

0

Cela dépend vraiment:

a) la taille relative (nombre d'entrées) de ces deux colonnes

b) si les colonnes sont indexés

S'ils sont tous deux indexés et de ~ De la même taille, la vitesse de la requête sera approximativement la même. Si l'un est indexé et l'autre non, l'indexé sera (beaucoup) plus rapide. Si aucun des deux n'est indexé, cela dépendra de l'endroit où l'entrée recherchée dans la table est la plus rapide.

1

Tout dépend si la colonne de la table est indexée ou non (explication sur selectivity).