Comme vous recherchez des informations spécifiques à Oracle, je recommanderais le blog Ask Tom sur Oracle. En général, je pense que vous trouverez que le conseil est de ne pas régler la requête. Vous obtiendrez de bons conseils sur la façon d'écrire une requête que l'optimiseur peut optimiser. La documentation Oracle est également en ligne , et j'y cherche généralement des informations à jour sur Oracle. Je n'ai pas travaillé avec SQLServer donc je n'ai aucune recommandation à ce sujet.
Je n'ai pas vu beaucoup de nouveautés dans le domaine de l'optimisation des requêtes au cours des dernières années. Le grand changement est la dépréciation de l'optimiseur basé sur des règles, avec lequel je me souviens à peine d'avoir travaillé. Cependant, je comprends que SQLServer utilise toujours un optimiseur basé sur des règles, donc comprendre ses règles peut aider.
Un outil dans lequel vous pouvez modifier une requête, l'exécuter et générer un plan d'explication aide à comprendre quels changements vous permettent d'obtenir une requête qui fonctionne bien. J'ai eu de bons résultats avec AquaData Studio, et j'aime vraiment sa vue arborescente. Le développeur SQL devrait faire de même.
Comme pour toute optimisation, vous devez disposer de données quantitatives sur ses performances. Ensuite, vous pouvez déterminer si vous l'avez réellement optimisé.
La façon d'optimiser une requête dépend en partie de la façon dont l'analyseur construit et optimise la requête. Dans une plus large mesure, cela dépend de la distribution des données que vous interrogez. Dans une base de données Oracle, si l'ensemble de résultats représente au moins quatre pour cent d'une table et est distribué de manière aléatoire, une analyse de table est généralement plus rapide qu'un index.
J'ai travaillé à l'optimisation des requêtes pour une équipe de développeurs. Deux ou trois requêtes par an seulement nécessitaient une optimisation sérieuse. La plupart des requêtes sont suffisamment simples pour ne pas nécessiter d'optimisation. Le reste peut généralement être géré en ajoutant des chemins de jointure manquants.
Pour Oracle, il existe trois paramètres réglables qui peuvent avoir un impact significatif sur les performances. Le coût des recherches d'index et de données interagit pour changer les conditions dans lesquelles un index in sera ou ne sera pas utilisé. Ces deux peuvent être réglés sur une base par session. Les valeurs par défaut ne sont souvent pas optimales. L'autre valeur contrôle le nombre d'alternatives que l'optimiseur va essayer. Augmenter cette valeur est souvent utile.
L'optimisation est considérablement affectée par la distribution et le volume des données. Lors de l'optimisation, il est préférable d'utiliser une copie de la base de données de production, ou au moins une base de données avec la même distribution de données et les mêmes volumes. J'ai gravement endommagé l'environnement de test, optimisant une requête pour la base de données des ordres de fabrication. Les bases de données de test et de développement avaient une distribution de données considérablement différente, ce qui entraînait l'échec de la requête, même avec beaucoup moins de données.