Datenbanken und mehr

9. April 2007

Wie navigiere ich durch eine grosse Anzahl von Datensätzen?

Filed under: T-SQL — Urs Gehrig @ 20:56

Ein klassisches Problem: In der Datenbank sind abertausende von Kunden, millionen von Bestellungen oder eine unüberschaubare Anzahl von Medikamenten abgelegt. Alle Datensätze auf einmal von der DB zu laden ist in diesem Falle nicht praktikabel; die Antwortzeit wird zu Gross und über das Netzwerk gehen zu viele Informationen auf einmal. Da hilft nur ein blockweises Lesen der Datensätze – hier spricht man auch von paging.

Wie ein entsprechendes Paging-Query aussehen kann, zeige ich am Besten anhand eines einfachen Beispiels: Ich brauche die Kundenadressen ab Position 100 bis 200.

SELECT *
FROM (SELECT TOP 100 * 
      FROM (SELECT TOP 200 ID, Name, Address
            FROM Customers
            ORDER BY ID ASC) AS Customers
      ORDER BY ID DESC) AS Customers
ORDER BY ID ASC

Wenn du zu den Glücklichen zählst, die bereits ausschliesslich für den SQL Server 2005 programmieren dürfen, dann geht das ganze auch etwas einfacher, effizienter und übersichtlicher:

WITH OrderedCustomers AS
(SELECT ID, Name, Address,
 ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber
 FROM Customers)

SELECT *
FROM OrderedCustomers
WHERE RowNumber BETWEEN 100 AND 200

Advertisements

Schreibe einen Kommentar »

Es gibt noch keine Kommentare.

RSS feed for comments on this post. TrackBack URI

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Bloggen auf WordPress.com.

%d Bloggern gefällt das: