Delen via


Overzicht van vensterfuncties

Vensterfuncties werken op meerdere rijen (records) in een rij die tegelijk is ingesteld. In tegenstelling tot aggregatiefuncties vereisen vensterfuncties dat de rijen in de rijenset worden geserialiseerd (een specifieke volgorde hebben). Vensterfuncties kunnen afhankelijk zijn van de volgorde om het resultaat te bepalen.

Vensterfuncties kunnen alleen worden gebruikt voor geserialiseerde sets. De eenvoudigste manier om een rijenset te serialiseren is met behulp van de operator serialiseren. Deze operator 'blokkeert' de volgorde van rijen op een willekeurige manier. Als de volgorde van geserialiseerde rijen semantisch belangrijk is, gebruikt u de sorteeroperator om een bepaalde volgorde af te dwingen.

Aan het serialisatieproces zijn niet-triviale kosten verbonden. Het kan bijvoorbeeld voorkomen dat queryparallellisme in veel scenario's wordt voorkomen. Pas daarom niet onnodig serialisatie toe. Indien nodig wijzigt u de volgorde van de query om serialisatie uit te voeren op de kleinst mogelijke rijset.

Geserialiseerde rijenset

Een willekeurige rijenset (zoals een tabel of de uitvoer van een tabellaire operator) kan op een van de volgende manieren worden geserialiseerd:

  1. Door de rijenset te sorteren. Zie hieronder voor een lijst met operators die gesorteerde rijensets verzenden.
  2. Met behulp van de serialisatieoperator.

Veel tabellaire operators serialiseren uitvoer wanneer de invoer al is geserialiseerd, zelfs als de operator zelf niet garandeert dat het resultaat wordt geserialiseerd. Deze eigenschap wordt bijvoorbeeld gegarandeerd voor de operator uitbreiden, de projectoperator en de operator where.

Operators die geserialiseerde rijensets verzenden door te sorteren

Operators die de eigenschap van de geserialiseerde rijenset behouden