Maison > base de données > tutoriel mysql > Pourquoi utiliser « SELECT TOP 100 PERCENT » dans les requêtes SQL ?

Pourquoi utiliser « SELECT TOP 100 PERCENT » dans les requêtes SQL ?

Barbara Streisand
Libérer: 2025-01-04 03:30:38
original
510 Les gens l'ont consulté

Why Use

Pourquoi utiliser « Sélectionner les 100 premiers pour cent » ?

Avant SQL Server 2005, les développeurs utilisaient l'astuce « Sélectionner les 100 premiers pour cent » pour activer l'utilisation d'une commande by clause dans une définition de vue. Cependant, au-delà de cet objectif, certains codes hérités aujourd'hui incluent toujours « Select Top 100 Percent » dans les instructions SQL dynamiques utilisées dans ADO dans les applications ASP.NET.

La question : y a-t-il une raison d'utiliser " Top 100 % » dans ces scénarios ?

La réponse : intermédiaire Matérialisation

Selon des experts comme Adam Machanic, « Select Top 100 Percent » a été utilisé pour la « matérialisation intermédiaire ». Voici pourquoi :

Dans SQL Server, les requêtes peuvent être évaluées dans des ordres différents selon les circonstances. Par exemple, les deux requêtes suivantes peuvent produire des résultats différents en raison de l'ambiguïté dans l'ordre d'évaluation :

SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100

SELECT foo
FROM
    (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
    CAST(foo AS int) > 100
Copier après la connexion

Cependant, avant SQL Server 2005, le fait de placer la requête interne dans "Sélectionner les 100 premiers pour cent" forçait la requête interne à mettre en file d'attente, ce qui entraîne un ordre d'évaluation cohérent :

SELECT foo
FROM
    (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
    CAST(foo AS int) > 100
Copier après la connexion

Attention Remarque

Bien que cette technique ait été acceptable dans le passé, il est généralement conseillé d'éviter d'utiliser « Sélectionner les 100 premiers pour cent » en SQL dynamique. Les résultats peuvent ne pas être cohérents en raison de changements dans les niveaux de correctifs, le schéma, les index ou le nombre de lignes.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal