Cursor (database)
Een aanwijzer in een resultaatset waarmee rijen in porties worden opgehaald in plaats van allemaal tegelijk. Hij bestaat omdat een query die tien miljoen rijen teruggeeft anders in het geheugen van de client moet passen.
Met DECLARE en FETCH houdt de server bij waar je bent, en de client kan met constant geheugengebruik door een willekeurige hoeveelheid data stromen. Het is het juiste gereedschap voor grote exports en migratietaken. De prijs is dat de cursor leeft binnen een transactie die tijdens het hele lezen open moet blijven — en een langlopende transactie verhindert het opruimen van dode rijen, een van de meest voorkomende oorzaken van database-bloat. Voor paginering in een gebruikersinterface is een cursor vrijwel altijd de verkeerde keuze; daar wil je keyset-paginering met WHERE id > last, die geen toestand vasthoudt en niet trager wordt naarmate je verder terugbladert.