> Tech > Tip 5 : Utilisez SQL efficacement

Tip 5 : Utilisez SQL efficacement

Tech - Par iTPro - Publié le 24 juin 2010
email

SQL est un langage de traitement d'ensemble, et pas un langage de traitement ligne à  ligne. T-SQL, dialecte du langage SQL de Microsoft, peut utiliser des curseurs du serveur pour accéder à  une ligne à  la fois ; mais la plupart des solutions qui utilisent les curseurs du serveur seront

plusieurs fois plus lentes que des solutions qui utilisent les instructions SELECT et les instructions UPDATE pour effectuer la tâche équivalente. Plus l’expérience de programmation en SQL est grande, et plus on utilise facilement et efficacement le langage SQL. En tirant parti des fonctions telles que des sous-requêtes, des tables dérivées et des expressions CASE pour manipuler des ensembles de lignes, on accélèrera les solutions tout en accroissant les performances de SQL Server.

Supposons, par exemple, qu’une table contienne une ligne pour chaque produit en stock et qu’une autre table contienne une ligne pour la quantité de chaque vente de ce produit. Il convient de dénormaliser la base de données et de stocker la somme des ventes de chaque produit dans la table de stock du produit. Pour générer ces sommes, on pourrait utiliser un curseur et avancer dans la table des produits ligne à  ligne. Pour chaque ligne, on pourrait ensuite trouver toutes les lignes correspondantes dans la table des ventes, additionner les quantités et utiliser cette somme pour mettre à  jour la table de stock du produit. Dans cet exemple, on peut bien sûr utiliser des curseurs du serveur pour collecter les chiffres des ventes totales, mais c’est terriblement inefficace.

On peut effectuer la même tâche en utilisant l’instruction UPDATE suivante et la sous-requête associée. Cette instruction utilise la table des titres dans la base de données publicitaire comme table de produits et, pour chaque titre, l’instruction ajoute les valeurs dans le champ qty (quantité) de la table des ventes.

UPDATE titles
SET ytd_sales =
(SELECT sum(qty) FROM sales
WHERE title_id = titles
.title_id)

Téléchargez gratuitement cette ressource

Comment cerner la maturité digitale de votre entreprise ?

Comment cerner la maturité digitale de votre entreprise ?

Conçu pour les directions IT et Métiers, ce guide vous permettra d'évaluer précisément vos processus de communication client, d'identifier vos lacunes et points d'inflexion pour établir un plan d’actions capable de soutenir durablement votre évolution. Bénéficiez maintenant d'une feuille de route complète.

Tech - Par iTPro - Publié le 24 juin 2010