In der Abfrage, die Sie gepostet haben:
select * from <table_name>;
Es gibt keine 100. bis 200. Zeile, da Sie kein ORDER BY angeben. Die Bestellung kann nur garantiert werden, wenn Sie ORDER BY aus einer Reihe interessanter Gründe angeben, aber das ist hier nicht der eigentliche Punkt.
Um dies zu veranschaulichen, verwenden wir eine Tabelle. Ich verwende die Users-Tabelle aus dem Stack Overflow-Daten-Dump und führe die folgende Abfrage aus:
SELECT * FROM dbo.Users ORDER BY DisplayName;
Standardmäßig enthält das Feld Anzeigename keinen Index, sodass SQL Server die gesamte Tabelle scannen und nach Anzeigename sortieren muss. Hier ist der Ausführungsplan :
Es ist nicht schön - das ist eine Menge Arbeit mit geschätzten Teilbaumkosten von ungefähr 30.000. (Sie können es sehen, indem Sie den Mauszeiger über den Auswahloperator bei PasteThePlan bewegen.) Was passiert also, wenn wir nur Zeilen 100-200 wollen? Wir können diese Syntax in SQL Server 2012+ verwenden:
SELECT * FROM dbo.Users ORDER BY DisplayName OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY;
Der Ausführungsplan dazu ist auch ziemlich hässlich:
SQL Server durchsucht weiterhin die gesamte Tabelle, um die sortierte Liste zu erstellen, damit Sie 100 bis 200 Zeilen erhalten, und die Kosten belaufen sich weiterhin auf rund 30.000. Schlimmer noch, diese ganze Liste wird jedes Mal neu erstellt, wenn Ihre Abfrage ausgeführt wird (schließlich hat möglicherweise jemand seinen Anzeigenamen geändert.)
Damit es schneller geht, können wir einen nicht gruppierten Index für DisplayName erstellen, der eine Kopie unserer Tabelle ist und nach diesem bestimmten Feld sortiert ist:
CREATE INDEX IX_DisplayName ON dbo.Users(DisplayName);
Mit diesem Index führt der Ausführungsplan unserer Abfrage nun eine Indexsuche durch:
Die Abfrage wird sofort beendet und hat einen geschätzten Teilbaumaufwand von nur 0,66 (im Gegensatz zu 30.000).
Wenn Sie die Daten so organisieren, dass die von Ihnen häufig ausgeführten Abfragen unterstützt werden, kann SQL Server Verknüpfungen verwenden, um Ihre Abfragen zu beschleunigen. Wenn Sie dagegen nur Heaps oder Clustered-Indizes haben, sind Sie fertig.