un moyen efficace de tester si une ligne de la table existe
J'essaie de trouver le moyen le plus efficace pour déterminer si une ligne de la table existe.
J'ai à l'esprit 3 options:
- SÉLECTIONNEZ EXISTS(SELECT 1 from table1 OÙ some_condition);
- SELECT 1 from table1 OÙ some_condition LIMITE de 0,1;
- SELECT COUNT(1) from table1 OÙ some_condition;
Il semble que pour MySQL, la première approche est la plus efficace:
La meilleure façon de tester si une ligne existe dans une table MySQL
Est-il vrai en général pour toute base de données?
Mise à JOUR:
J'ai ajouté une troisième option.
UPDATE2:
Supposons que la base de données produits sont mysql, oracle et sql-server.
Qu'entendez-vous par "base de données" exactement - tout produit de base de données?
oui. tout produit de base de données.
Je ne pense pas que c'est possible de répondre à chaque produit, de la mise en œuvre seront différents massivement. Vous aurez à tester avec tous les produits que vous avez l'intention sur l'utilisation de
oui. tout produit de base de données.
Je ne pense pas que c'est possible de répondre à chaque produit, de la mise en œuvre seront différents massivement. Vous aurez à tester avec tous les produits que vous avez l'intention sur l'utilisation de
OriginalL'auteur dcernahoschi | 2012-01-26
Vous devez vous connecter pour publier un commentaire.
Je ne
Mais je ne pense pas que cela fait une différence significative, sauf si vous l'appelez beaucoup (dans ce cas, je serais probablement utiliser une stratégie différente).
OriginalL'auteur Luis
Si vous l'utiliser comme un test si AU MOINS UNE ligne existe avec certaines condition (1 ou 0, true ou false), alors:
Oracle pouvez arrêter de compter après ça devient un hit.
OriginalL'auteur tbone
Existe est plus rapide, car il sera de retour le nombre de résultats correspondant à la sous-requête et non pas la totalité du résultat.
OriginalL'auteur Mike
Les différentes méthodes ont toutes des avantages et des inconvénients:
pourrait être le plus rapide sur MySQL, mais
comme dans @Luis réponse vous donne le nombre de.
Plus au point, je vous recommande de prendre un coup d'oeil à une logique d'entreprise: Très rarement est-il nécessaire pour voir si une ligne existe, le plus souvent vous voulez
INSERT .. ON DUPLICATE KEY
ouREPLACE INTO
OriginalL'auteur Eugen Rieck
La fonction exists est défini généralement en SQL, il n'est pas seulement une fonction MySQL : http://www.techonthenet.com/sql/exists.php
et j'ai l'habitude d'utiliser cette fonction pour tester si une ligne existe.
Cependant dans Oracle que j'ai vu à plusieurs reprises, l'autre approche suggérée avant:
OriginalL'auteur thermz