Je ne préconise pas non plus une écriture type. Je suis d'accord qu'à un rien près, deux requêtes peuvent voir leurs performances inversées.
Cependant, le plan d'execution est capital pour détecter les causes de ralentissement.
Tu peux retourner une requête pendant des heures, en utilisant des index à première vue corrects, et t'appercevoir que tu te palluche des row scan sur des index dans des traîtements nécessitant des routines très lentes.
Isoler à ce moment ce qu'à réellement effectué le moteur du SGBD est capital pour voir quelle partie de la requête pose problème.
Evidement, quand tu n'as qu'une requête simple avec 2 ou 3 tables liées tout simplement par leurs clés étrangères, tu peux t'en passer. Mais quand tu commences à avoir des requêtes avec jointures ouvertes multiples, des fonctions de regroupement sur plusieurs niveaux et 6 ou 7 niveaux d'imbrications de sous-requêtes, il devient vital de consulter ce plan, sous peine de passer à côter de grosses lenteurs quand bien même on vient de faire une optimisation de la mort qui tue pour une requête.
Sous Oracle par exemple, je n'ai pas les outils nécessaires au boulot pour voir le plan d'exécution. Il m'est arrivé une fois de passer derrière un collègue qui avait une requête qui mettait 4 heures à retourner un résultat. Pas glop.
Je bosse dessus deux jours, pour successivement atteindre 1 heure pour 15 minutes d'éxecution.
Content du résultat, je me dis qu'il n'y a plus moyen de faire mieux.
Pourtant, je décide de tester cette requête chez un autre client (même modèle des données, c'est bien pratique), sur un poste où j'avais accès au plan d'éxécution. Quand j'ai vu qu'il restait encore 4 full scan sur des tables monstrueuses, j'ai rebossé quelques heures sur le machin, et je suis tombé à 150 ms. Sans le plan d'exécution, il ne me serait même pas venu à l'esprit après la première phase d'optimisations que je pouvais encore gagner autant...