Le Post Infeeny

Les articles des consultants et experts Infeeny

[PASS Summit 2013] Ten Query Tuning Techniques every sql programmer should know

Speakers : Aaron Bertrand – Senior consultant at SQL Sentry & Kevin Kline – Director of engineering services at SQL Sentry

Niveau de la session : 100

Test & Tuning environment :

* Code pour vider les caches :

CHECKPOINT

DBCC [FreeProcCache | FreeSystemCache | FlushProcInDB]

DBCC DropCleanBuffers –> A ne pas faire en production

* Code pour mettre en place des mesures :

SET STATISTICS [Time | IO]

SET SHOWPLAN [TEXT | XML]  ou Graphic Execution Plans

* Code pour les Dynamic Management Views (DMV) :

– System info : sys.dm_os_performance_counters, sys.dm_os_wait_stats,

– Query info : sys.dm_exec_requests,

– Index info : sys.dm_db_index_usage_stats,

Query tuning techniques :

* Cursors :

à utiliser avec parcimonie et avec les bonnes options car ils peuvent être lents surtout s’ils sont utilisés avec la valeur par défaut. De plus, les curseurs ne sont généralement pas nécessaires.

Démo sur une table qui a 500.000 lignes :

DECLARE c CURSOR –> 11 secondes,

DECLARE c CURSOR LOCAL FAST_FORWARD –> 4 secondes,

* NOT IN Versus LEFT JOIN :

– Le NOT IN est dangereux lorsque la colonne source est NULLable,

– Le LEFT OUTER JOIN n’est pas toujours une bonne alternative,

– NOT EXISTS et EXCEPT sont recommandés mais peuvent retourner des résultats différents.

Démo :

Table A (1,1,NULL)

Table B (1,1,2,2)

B NOT IN A –> aucun résultat car NULL dans A –> KO,

B NOT EXISTS A –> 2,2 –> OK,

B EXCEPT A –> 2 –> OK (dédoublonnage effectué dans ce cas contrairement à l’exemple précédent),

* Il ne faut pas systématiquement créer les indexes que le Tuning Advisor ou Execution Plan préconisent,

* Implicit conversions :

à éviter au maximum. Passer plutôt par les conversions explicites afin que le moteur SQL optimise la requête.

* Outil intéressant « Column Mismatch » de Ian Stirk qui explore la base de données à la recherche des colonnes typés différemment dans les tables de la base.

Conclusion :

Session en deçà des attentes. Beaucoup de retours d’expérience clients mais pas suffisamment de démos pour étayer les propos. Certaines techniques évoquées dépassent le niveau 100 de la session.

Ismaïl Ben Lamine

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :