|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : février 2009 Messages : 102 ![]() |
bonjour à tous,
j'essai du faire un truc du genre : Code :
Merci |
||
|
|
00
|
|
|
#2 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 42 ![]() |
Peut être avec cette syntaxe :
Code :
|
||
|
|
10
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Ta demande n'est pas très claire. Ne veux-tu pas plutôt établir la requête suivante ?
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : février 2009 Messages : 102 ![]() |
bonjour,
Non C'est plus dans l'optique de la réponse de battistuta. Mais je n'ai pas encore eu le temps d'essayer, ce sera pour lundi. merci |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : février 2009 Messages : 102 ![]() |
Merci battistuta !!! ca fonctionne impeccablement.
|
|
|
00
|
|
|
#6 | ||||
|
Membre actif
![]() Inscription : juin 2008 Messages : 146 ![]() |
Bonjour,
Gaffe aux perfs. Avec la solution du CASE, tu pars en scan de la table. S'il est est volumineuse... Des fois, il faut savoir faire simple : Code :
Code :
|
||||
|
|
10
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 42 ![]() |
Bien vu le montagnard
![]() Sur des rubriques indexés et une table volumineuse, on a tout à gagner avec un bon vieux OR... |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : octobre 2006 Messages : 502 ![]() |
Bonjour
Juste une remarque. En utilisant le OR, il y a des chances d'avoir un TableScan. Et plus il y a de OR, plus la probabilité d'avoir un TableScan augmente. |
|
|
20
|
|
|
#9 |
|
Membre actif
![]() Inscription : juin 2008 Messages : 146 ![]() |
Tout à fait d'accord avec Bernard59139, le OR est souvent mal interprété par DB2 en terme de chemins d'accès. Ceci dit, avec le CASE, le scan est une certitude. Avec le OR, on a des chances d'être OK.
J'ai fait 2 ou 3 essais tout à l'heure sur une table de plusieurs millions de lignes avec une dizaine de OR : réponse dans la seconde. Avec le CASE, réponse en plusieurs minutes... Y'a pas photo ! Je profite du message pour passer le bonjour à l'homme du sud alias Battistuta. Préviens si tu viens dans la région, on a beau dire, le ski c'est quand même plus de sensations que DB2... |
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : octobre 2006 Messages : 502 ![]() |
Bonjour
Je viens de lire la doc. Le " col1 IN (CASE ...." n'est ni indexable, ni stage 1. ==> le tablescan sera très consommateur de ressources. A l'inverse, la même requête avec des "OR" bien codés, sera STAGE1, même si les index ne sont pas utilisés. |
|
|
01
|
|
|
#11 |
|
Membre chevronné
![]() Guillaume VENTREz/OS Technical Leader Inscription : décembre 2006 Messages : 514 ![]() |
Le OR fait diminuer le nombre de matchcols s'il porte sur une/des colonnes indexables si je ne m'abuse (tout comme un BETWEEN)
.
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★ |
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Citation:
Db2 ne fera de scan table que s'il estime que les clauses OR vont permettre de ramener plus de 20% des lignes de la table en question. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com