Bonjour,
mettant de l'ordre dans mes scripts, je me suis fendus de 7 petits articles dans mon blog... Il y en a pour tous les goûts...
1) Comment rendre le LIKE '%toto%' efficace ou les index rotatifs...
Tout le monde sait qu'un index ne peut être utilisé que si le prédicat de recherches est "sargable" ("cherchable en" français...). Autant l'optimiseur de SQL Server va prendre en compte l'index sur une recherche comme LIKE 'toto%' ouencore sur le LIKE '%toto' si l'on utilise une colonne calculée REVERSE indexée et que l'on fait la recherche à l'envers (LIKE 'otot%' sur la colonne avec la chaine inversée) autant il n'est pas possible que l'index soit utilisé en recherche pour un LIKE '%toto%'... sauf à recourir aux index rotatifs.... À lire donc !
2) Comment calculer au plus juste une "bounding box" pour l'indexation spatiale géométrique ?
Les index spatiaux sur une colonne de type geometry doivent impérativement être bornés afin de délimiter l'espace d'indexation, car il serait difficile d'indexer l'infini (le plan euclidien est infini par nature) et à ce sujet, Woody Allen, disait, "l'infini c'est long, surtout vers la fin..." (1); Pour pallier à cet inconvénient, voici une formule qui calcule au plus juste l'enveloppe rectangulaire de la bounding box la plus serrée possible dans une collection d'objet géométriques, mais vous pouvez y rajouter votre propre marge...
3) Déblocage d’une instance SQL Server bloquée
Combien de fois ais-je vu les développeurs et certains pseudo DBA arrêter SQL Server pour débloquer des processus bloqués, alors qu'il suffit simplement de "tuer" la bonne session, ce qui ne provoque aucune effusion de sang, mais juste une annulation de la transaction en cours. Encore faut-il savoir quelle est la bonne session et cet article à pour but de vous fournir les moyens de le savoir !
4) Génération d’un « rétro script » d’insertion
Comme je trouve l'outil de SQL Server assez mal fait de ce point de vue, je me suis permis de développer mon propre outil pour générer les scripts SQL d'insertion des données dans les tables. Ceux qui postent ici n'auront plus d'excuses pour nous fournir un joli scripts de commandes SQL INSERT afin de donner un jeu d'essais pour qu'on les aident.
5) Un "audit trail" générique (ou comment pister les mises à jours des tables que l'on souhaite).
Ce type d'audit est destiné à pister les événements qui se passe dans un système. Dans une base de données, il est destiné à vérifier ce qui s'est passé, notamment sur le plan des valeurs avant ou après la modification. Il peut à la fois servir pour la sécurité (qui à fait quoi ?), comme sur le plan fonctionnel (pourquoi cette valeur ?, À quelle date un tel changement ?...)
6) Métadonnées des index
Qui n'a un jour rêvé de voir la procédure sp_helpindex doté de nouvelles fonctionnalités tel que montrer la liste des colonnes INCLUDE ou l'éventuel filtre ? Cette mouture particulière permet de voir les principales métadonnées des index, mais sur tous les index, pas seulement les index transactionnels (BTree), mais aussi les index spatiaux, XML, FullText et columnstore...
Bonne lecture et merci pour vos commentaires !
(1) en fait “Eternity is really long, especially near the end”...
Partager