Optimisation requête

cdsarkis Messages postés 1 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 21 novembre 2008 - 21 nov. 2008 à 09:32
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 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" /??>

1 réponse

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
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.

Pour plus de lecture
0
Rejoignez-nous