2012-01-15 8 views
-1

Cettequi est le plus rapide pour une requête Oracle?

select * from customers where id = 1; 
select * from customers where id = 2; 

ou

select * from customers where id in(1,2); 

qui est plus rapide?

+1

essayer. Regardez le plan d'explication. – Mat

+0

Dépend de vos index – Avitus

+2

La première renvoie deux collections contenant chacune une ligne. La seconde renvoie une collection contenant 2 lignes. Ils ne donnent pas le même résultat, ce qui les rend incompréhensibles. Besoin de plus de contexte pour une question significative. –

Répondre

5

Le premier est en fait deux instructions vous obligeant à faire deux allers-retours à la base de données. Le second sera très probablement plus rapide puisqu'il ne s'agit que d'une seule déclaration.

0

Est-ce vraiment ce que vous essayez de déterminer? Demandez-vous s'il est plus rapide de faire un voyage en retournant deux rangées ou deux voyages en retournant chacun une rangée? Si telle est la question, alors je suis d'accord avec les commentaires - essayez, mesurez et comparez.

Si vous essayez de rendre ce type de chose efficace, alors vous devriez probablement regarder à l'aide de variables de liaison à la place. Si votre question signifie vraiment ce qu'elle dit, alors probablement toute réponse ici fera l'affaire.

0

Toute question avec "plus rapide" dépendra toujours des spécificités de votre base de données. Je n'ai vraiment rien à ajouter sur plhmhck et MJB sur le fait que vous parlez de 2 requêtes par rapport à 1 requête.

Mais sachez le l'optimiseur habituellement (toujours?) Réécrire WHERE id IN (1,2)-WHERE (id = 1 OR id = 2)

Questions connexes