Très souvent, lorsqu’une requête donnée traîne un peu, une solution pour l’optimiser consiste à s’attacher à positionner des index adéquats. Un élément important dans le design des index réside dans la notion d’index couvrants. Continuer la lecture
Archives de catégorie : Articles SQL Server
Purge massive de données
Dans l’article Découpage de gros traitements, j’évoquais le fait de traiter par paquets une insertion massive de données.
Mais sans aller chercher si compliqué, il est, de manière beaucoup plus courante, très utile de découper par lots des traitements tels que la purge de données. Continuer la lecture
Nombre de lignes d’une table
Quelle idée d’écrire un article pour expliquer comment compter le nombre d’enregistrements dans une table ? Tout le monde sait répondre !
SELECT COUNT(*) FROM MaTable
Et bien non, justement ! Il y a bien plus performant … Continuer la lecture
Taille des transactions
J’ai tendance à répéter à l’envi que les opérations dans SQL Server doivent être effectuées au maximum en ensembliste plutôt qu’en unitaire. Cela concerne aussi les transactions qui, à partir du moment où cela répond au fonctionnel, ne doivent pas être d’une granularité trop fine.
Tout comme il vaut mieux modifier une fois mille enregistrements que mille fois un enregistrement, il vaut mieux avoir une transaction de mille instructions que mille transactions de une instruction. Continuer la lecture
Mauvais plan d’exécution ?
Aujourd’hui, je vais aborder une situation assez couramment rencontrée : les plans d’exécution de procédures qui semblent partir de travers. Votre client vous appelle parce que ses traitements semblent être au ralenti et pourtant, lorsque vous récupérez sur votre serveur de tests une copie de sa base de données, tout semble fonctionner à merveille… Continuer la lecture
Un index pour l’occasion
Lorsque l’on consulte les différentes vues système d’une instance SQL, et plus particulièrement la vue sys.dm_db_missing_index_details, il peut arriver de trouver des index qui sont très utiles, mais seulement pour des actions « rares ».
Dans ce cas, le fait de créer un index permanent n’est peut-être pas la meilleure méthode, et il est à envisager de créer un index juste pour l’occasion. Continuer la lecture
Ajout de colonne sur SQL Server 2012
SQL Server 2012 présente de nombreuses nouvelles fonctionnalités. En ce qui concerne les performances et la haute disponibilité, voici une amélioration assez intéressante : l’ajout de colonnes NOT NULL en tant qu’opération en ligne. Elle peut, dans certains cas, rendre quasiment instantanné l’ajout de nouvelles colonnes même si la table contient un très grand nombre d’enregistrements. Continuer la lecture
Backup COPY_ONLY
Il est assez souvent négligé par les administrateurs de systèmes SQL Server que le fait de donner un peu trop de droits aux gestionnaires applicatifs de bases applicatives peut être néfaste à la gestion de la sécurité des données. Notamment, le fait de distribuer à tout va les droits de sauvegardes de bases de données peut au final nuire au plan de sauvegarde global, et même le mettre totalement à plat. Continuer la lecture
Différence entre TOP et TABLESAMPLE
Voici un petit papier pour comparer les mots-clés TOP et TABLESAMPLE, le TOP étant dans les faits trop souvent utilisé là où l’on devrait utiliser TABLESAMPLE…
Il s’agira ici de comparer à la fois la syntaxe d’utilisation, les effets et aussi les performances. Continuer la lecture
Mise à jour de définition de code : risques du DROP / CREATE
Pour mettre à jour une procédure stockée, une vue ou encore d’autres objets SQL Server disposant d’une définition sous forme T-SQL, une solution classique consiste à supprimer la définition actuelle de l’objet (DROP) et à recréer ensuite l’objet avec sa définition mise à jour. C’est d’ailleurs ce type de code que construit SQL Server Management Studio (SSMS).
Mais il est en fait parfois plus judicieux d’utiliser une méthode implémentant une mise à jour (commande ALTER), qui peut présenter des avantages non négligeables. Continuer la lecture