Maison > base de données > tutoriel mysql > Pourquoi utiliser « SELECT TOP 100 PERCENT » dans SQL Server : une syntaxe nécessaire, mauvaise ou inutile ?

Pourquoi utiliser « SELECT TOP 100 PERCENT » dans SQL Server : une syntaxe nécessaire, mauvaise ou inutile ?

Patricia Arquette
Libérer: 2025-01-01 13:04:11
original
988 Les gens l'ont consulté

Why Use `SELECT TOP 100 PERCENT` in SQL Server:  A Necessary Evil or Useless Syntax?

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
Copier après la connexion

Invalidé Exemple :

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

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
Copier après la connexion

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...
Copier après la connexion

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