cdsarkis
Messages postés1Date d'inscriptionvendredi 21 novembre 2008StatutMembreDernière intervention21 novembre 2008
-
21 nov. 2008 à 09:32
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
21 nov. 2008 à 14:16
Bonjour,
je dois lancer la requête qui suit sur une table de plus de 200 millions de lignes (environnement SQL Serveur 2000). Est-elle bien optimisée ?
En vous remerciant,
Dan
DECLARE @DATE_RECHERCHE datetime
SET @DATE_RECHERCHE = dateadd (dd, -540, '2006-11-06 13:00:00.000')
select * from S_LOY_TXN_INIT
where
SUB_TYPE_CD in ('P', 'S' , 'T' )AND ( STATUS_CD not in ('T', 'A', 'ALM', 'RM' ) OR INTERNAL_DT > @DATE_RECHERCHE)<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 21 nov. 2008 à 14:16
Salut
Le OR est en general mauvais en SQL
Essaye de le convertir en AND
Le NOT est a eviter si tu peux aussi.
Apres il faut regarder le plan d'execution
et le temps d'execution avec le profileur
Il faut mettre des index sur tes deux criteres SUB_TYPE_CD et STATUS_CD
ainsi que des contraintes check de facon a aider l'optimiseur de sqlseveur a optimiser les traitements.