Eh bien ...
- D'abord, vous avez une vérification de la syntaxe, suivie par la génération d'un arbre d'expression - à ce stade, vous pouvez également vérifier si des éléments existent et « aligner » (c.-à-champs existent AU SEIN de la table). C'est la première étape - toute erreur ici que vous dites simplement à l'expéditeur de devenir réel.
- Ensuite, vous avez .... analyse. Une requête SQL est différente d'un programme en ce sens qu'elle ne dit pas COMMENT faire quelque chose, QUEL EST LE RÉSULTAT. Définir la logique basée. Donc, vous obtenez un analyseur de requête (en fonction de produit mauvais à bon - oracle de longue date, DB2 les plus sensibles, même la mesure de la vitesse du disque) pour décider de la meilleure façon d'aborder ce résultat. C'est une bête vraiment compliquée - il peut essayer des dizaines ou des centaines d'approches pour en trouver une qu'il croit être la plus rapide (basée sur les coûts, essentiellement des statistiques).
- Ensuite, cela est exécuté.
L'analyseur de requête, d'ailleurs, est l'endroit où vous voyez d'énormes différences. Pas sûr de MySQL - SQL Server (Microsoft) brille en ce qu'il n'a pas le meilleur (mais l'un des bons), mais qu'il a vraiment de beaux outils visuels pour afficher le plan de requête, comparer les estimations de l'analyseur à les vrais besoins (s'ils diffèrent trop des statistiques du tableau peuvent être désactivés, l'analyseur PENSE qu'une grande table est petite). Ils présentent joliment visuellement.
DB2 avait un optimiseur pendant un certain temps, la mesure - je l'ai déjà dit - la vitesse du disque pour le mettre dans elle est des estimations. Oracle est passé de "gauche à droite" (pas d'analyse réelle) pendant longtemps, et a pris des astuces de requête fournies par l'utilisateur (approche de la merde). Je pense que MySQL était très primitif au début - je ne sais pas où c'est maintenant.
format table dans la base de données, etc. - qui est vraiment quelque chose que vous ne devriez pas prendre soin de. Ceci est documenté (clairement, surtout pour une base de données open source), mais pourquoi s'en soucier? J'ai fait du travail SQL depuis près de 15 ans et je n'ai jamais eu ce besoin. Et cela inclut faire du travail assez haut de gamme dans certains domaines. Sauf si vous essayez de construire un outil de réparation de fichiers de base de données .... cela n'a aucun sens de déranger.
C'est une grande question! –
Pas une réponse en soi, mais c'est ainsi que cela fonctionne à un niveau élevé dans Oracle. http://www.idevelopment.info/data/Oracle/DBA_tips/Tuning/TUNING_10.shtml – JavaRocky
Pouvez-vous fournir le produit spécifique que vous avez l'intention? SQL Server, MySQL, Oracle, etc? –