Utilisation de SELECT TOP 100 Percent : aperçu des fonctionnalités inutilisées
Traditionnellement, SELECT TOP 100 PERCENT était utilisé dans les définitions de vues pour contourner la restriction contre en utilisant ORDER BY dans de tels contextes. Cependant, dans certaines bases de code, cette fonctionnalité apparaît étrangement au sein des instructions SQL dynamiques. Y a-t-il une justification pour cette inclusion, ou donne-t-elle simplement le même résultat que l'exclusion de TOP 100 PERCENT ?
Étonnamment, SELECT TOP 100 PERCENT a trouvé une application unique dans le domaine de la « matérialisation intermédiaire ». En tirant parti de cette construction, il a été possible de mettre en cache les résultats des requêtes et d'optimiser les exécutions ultérieures. L'article d'Adam Machanic propose une exploration éclairante de cette technique.
Bien que la pratique consistant à utiliser SELECT TOP 100 PERCENT de cette manière ne soit pas problématique en soi, elle exige une extrême prudence et ne doit être utilisée qu'en cas d'absolue nécessité. Sa dépendance à l'égard de circonstances spécifiques et de facteurs environnementaux le rend vulnérable à des changements subtils dans le schéma, la structure de l'index ou le nombre de lignes, ce qui peut conduire à un comportement inattendu et imprévisible.
Pour plus de clarté, considérons les exemples suivants :
Exemple invalidé :
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
Invalidé Exemple :
SELECT foo FROM (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar WHERE CAST(foo AS int) > 100
Exemple valide (SQL Server 2000 et 2005) :
SELECT foo FROM (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar WHERE CAST(foo AS int) > 100
De plus, SELECT TOP 100 PERCENT étend sa portée à SQL Server 2005, permettant des résultats potentiellement illimités avec :
SELECT TOP 2000000000 ... ORDER BY...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!