2010-12-11 9 views
0

Je suis un débutant au serveur SQL. gardant this question comme référence.Mon doute est
pourquoi Microsoft SQL Server n'a pas quelque chose comme limite dans Mysql et maintenant ils forcent à écrire soit SP ou requête interne pour la pagination.Je pense créer une vue temporaire/table ou l'utilisation d'une requête interne sera plus lente qu'une simple requête. Et je crois qu'il y aura une forte raison pour la déprécier. J'aime connaître la raison.pagination dans SQL Server 2008

Si quelqu'un le sait s'il vous plaît le partager.

+2

Bien que cela me préoccupe depuis longtemps, je n'étais pas au courant TOP pourrait jamais être utilisé pour définir la ligne de départ. Pouvez-vous dire où vous avez vu cela et où vous avez vu qu'il était obsolète? –

+0

Merci pour la correction. Comme je l'ai dit, je suis un débutant à SQL Server que la syntaxe est donnée par un de mes collègues.Et je l'ai posté avec assez googling.sorry pour cela.Alors j'ai changé la question à "pourquoi le serveur Microsoft Sql n'a pas quelque chose comme limite dans Mysql "de pourquoi" Microsoft déprécié top 10,20 syntaxe ". J'espère que la question est bonne. – RSK

Répondre

3

Je n'ai jamais su que SQL Server supportait quelque chose comme TOP 10,20 - êtes-vous vraiment totalement sûr? N'était-ce pas un autre système peut-être?

Quoi qu'il en soit: SQL Server 2011 (dénomination de code "Denali") ajoutera plus de soutien pour cela quand il sort fin 2011 ou plus.

La clause ORDER BY obtiendra de nouveaux mots-clés supplémentaires OFFSET et FETCH - en savoir plus à leur sujet here on MSDN.

Vous serez en mesure d'écrire des déclarations comme:

-- Specifying variables for OFFSET and FETCH values 
DECLARE @StartingRowNumber INT = 150, @FetchRows INT = 50; 

SELECT 
    DepartmentID, Name, GroupName 
FROM 
    HumanResources.Department 
ORDER BY 
    DepartmentID ASC 
    OFFSET @StartingRowNumber ROWS 
    FETCH NEXT @FetchRows ROWS ONLY; 
+0

La plupart des excellentes nouvelles! J'en ai vraiment marre d'écrire des requêtes trop complexes juste parce que je ne veux pas tous les résultats. (BTW, je ne suis pas un expert SQL, mais j'ai également été surpris de voir la syntaxe TOP 10,20 mentionné.) –

1

SQL Server 2005 Paging – The Holy Grail (nécessite une inscription gratuite).

(Bien qu'il dit SQL Server 2005, il est encore applicable à SQL Server 2008)

+0

Peut-être bien si vous avez fourni un indice quant à ce que dit l'article. Pas tout le monde veut donner à chaque site, ils lisent un article sur leur adresse e-mail et encore un autre mot de passe. –

1

Je suis d'accord à 100%! MySQL a la clause LIMIT qui rend une syntaxe très facile pour retourner une plage de lignes.

Je ne sais pas avec certitude que la syntaxe de table temporaire est plus lente car SQL Server peut effectuer certaines optimisations. Cependant, une clause LIMIT serait beaucoup plus facile à taper. Et je m'attendrais à ce qu'il y ait aussi plus d'opportunités d'optimisation.

J'ai apporté ceci une fois avant, et le groupe auquel je parlais ne semblait tout simplement pas d'accord.

En ce qui me concerne, il n'y a aucune raison de ne pas avoir une clause LIMIT (ou équivalent), et je soupçonne fortement que SQL Server finira par le faire!