Il est assez surprenant de constater avec quelle désinvolture certains développeurs dédaignent l’écriture des requêtes SQL. Il y a sans doute une explication à cela. Dans des temps immémoriaux, les pionniers de l’informatique furent payés à la ligne de code. Plus ils tartinaient les listings, plus ils étaient payés. La
L’écriture des requêtes
mesure de la productivité était basée sur la façon de et certains langages permettaient de bien gagner sa vie parce que très verbeux, comme le fameux CoBOL…
Il est probable, tel un atavisme, que ce travers soit resté de nos jours. Pondre un programme de 2 000 lignes d’un code, même modernisé semble plus productif à bien des actuels tâcherons que d’optimiser une seule requête SQL sur la même période de temps et alors qu’elle remplit le même but ! « Je ne sais pas si mon patron apprécierait que je passe une journée sur la même requête » me disent certains, alors que j’interviens au prix fort pour rectifier une sauce qu’ils auraient pu réussir du premier coup à moindre frais…
Passé le cap de la culture, il y a aussi celui de la formation. Bien des développeurs sont capables d’écrire des algorithmes de gestion d’arbres sous forme récursive et avec un langage des plus moderne et ignorent encore que les jointures entre les tables s’effectuent dans une clause JOIN dont la syntaxe remonte à 1992 ! Pauvres universités, pauvres écoles d’ingénieurs où l’on concède à l’apprentissage des bases de données quelques maigres heures dans un cursus de quelques années… Bref, il faut bien le dire, à part quelques passionnés, peu d’informaticiens savent écrire de vraies requêtes. Alors de là à parler de techniques d’écriture…
Mais c’est pourtant ce que nous allons faire. Citons en trois : l’approche ensembliste, la résolution à petits pas et la technique d’ajout d’information. L’approche ensembliste consiste à considérer le problème sous l’angle des ensembles, c’est-à-dire avec les outils des mathématiques modernes que sont les diagrammes de Venn. Vous savez, les fameuses « patates » ! Cette technique consiste à penser ensemble et non ligne à ligne, à considérer le problème de manière globale et non comme à une série d’éléments ordonnés. Je prends souvent l’exemple introductif suivant : « une table est un sac de billes. Pouvez vous en extraire la dernière ? » La réponse fuse : impossible !
Mais si les billes ont été horodatées, alors la solution du problème saute aux yeux ! Considérez dès lors les ensembles et leurs opérations en regard des tables et des opérateurs de l’algèbre relationnel. Tiens… rien ne ressemble plus à une intersection qu’une jointure… Bref, commencez par dessiner les ensembles en jeu, faites les s’interpénétrer, s’exclure, se compléter et alors au beau milieu du graphe, la solution apparaîtra, bête, évidente… Mais il fallait y penser ! L’approche par petits pas consiste à partir d’une requête simple qui approche vaguement la solution puis de la compléter par petites touches.
Là où les choses s’enveniment, c’est lorsque le code de la requête grossit à cause de toutes les jointures, des différents prédicats des filtres WHERE et HAVING et de clauses plus barbares telles que les GROUP BY… Au fur et à mesure, il devient difficile d’y retrouver ses petits. Mais que cela ne tienne. Transformez cette première étape en un objet mille fois plus simple : une vue par exemple ! Dès lors vous pourrez à nouveau la farcir de quelques filtres et jointures supplémentaires, la placer en sous requête ou lui intimer d’en user…
C’est bien ce que vous faites en programmation objet ? Non ? En emboîtant vos objets dans d’autres et en nommant avec prétention le tout sous le nom générique de « classes » ! Qu’à cela ne tienne, utilisez les vues comme les expressions de table afin de parvenir au but. Si l’ensemble vous déplaît, alors réimbriquez la requête composant chaque vue dans celle qui abrite toute ces vues et peut être aurezvous la chance de trouver au final quelques simplifications. De plus, depuis l’apparition des expressions de tables, les fameuses CTE, l’imbrication des requêtes les unes dans les autres est encore facilité par la volatilité et la souplesse inhérente à cette construction. Usez-en, abusez-en !
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
- Afficher les icônes cachées dans la barre de notification
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Activer la mise en veille prolongée dans Windows 10
- Les 6 étapes vers un diagnostic réussi
Les plus consultés sur iTPro.fr
- Le Zero Trust : pourquoi votre entreprise en a besoin
- Cloud souverain : répondre aux enjeux d’hybridation et de maîtrise des dépendances
- Cybermenaces 2026 : l’IA devient la nouvelle arme des attaquants
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
Articles les + lus
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
Adapter la sécurité OT aux réalités de l’industrie
Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
À la une de la chaîne Tech
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
- Adapter la sécurité OT aux réalités de l’industrie
- Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
- Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
