du MySQL [MS-SQL] Comment faire le Limit [offset] - SQL/NoSQL - Programmation
Marsh Posté le 13-01-2004 à 20:08:17
Cela n'existe pas en MS-SQL.
Il faut faire une sous-requête avec des TOP(10)
Marsh Posté le 13-01-2004 à 20:38:55
SELECT TOP 10 name from table WHERE name NOT IN(SELECT TOP 20 ...)
retourne les éléments de 20 à 30
Marsh Posté le 13-01-2004 à 20:44:50
c'est vrai que quand on est habitué à limit(20,10), cette méthode s'apparente un peu à du bricolage.... Mais je me suis renseigné, j'ai pas trouvé de façon plus simple de le faire.
Marsh Posté le 13-01-2004 à 20:49:22
ben si tu n'es pas pressé par les performances et que tu utilises ADO.Net . Tu peux utiliser un DataAdapter comme je le disais plus haut..
Adapter.Fill(oDataset,startindex,Number_Rows,"nomtable" ).
Mon problème moi c'est que je veux sortir 50 lignes a la fois sur un ensemble de 50000 lignes environ.. et j ai toujours TimeoutExpired de SQL.. Alors je cherche le moyen le plus rapide !
Marsh Posté le 13-01-2004 à 20:51:57
lol. t'aurais pu réagir avant d'avoir des problèmes de Timeout...
Marsh Posté le 22-01-2004 à 08:43:08
Code :
|
Essayes ça sur des index, c'est très rapide, et cela remplace le limit sans problème. Par contre, c'est beaucoup plus chaud à utiliser....
Marsh Posté le 22-01-2004 à 15:03:40
++ pour gordon, parceque la méthode de jag est d'une lenteur abominable pour peut que tu as beaucoup de lignes. alors que celle-ci reste très rapide (ça ajoute à peine 10% de temps par rapport à un top x simple, alors que la méthode de jag est plutôt du style exponentielle au niveau temps.
Marsh Posté le 13-01-2004 à 19:40:58
Je cherche à reproduire la même chose que mySQL
du genre select * from matable limit 2,5
la commande TOP dans mSSQL ne permet pas de commencer à partir de la ligne qu'on veut..
J'ai vu aussi un truc similiaire avec oledbdataadapter
myAdapter.Fill(DataSet,startIndex,Nb_Rows,"NomTable" )
mais cela a l'air de retourner l'ensemble des lignes et de remplir la table de la ligne StartIndex jusqu a StartIndex+Nb_rows.
J'aimerais que la commande SQL renvoit directement et seulement les lignes concernées.
Quelqu un a une idée ?