F.40. tsm_system_rows

Le module tsm_system_rows fournit la méthode d'échantillonage de table SYSTEM_ROWS, qui peut être utilisé par la clause TABLESAMPLE d'une commande SELECT(7).

Cette méthode d'échantillonnage accepte un argument de type entier correspondant au nombre maximum de lignes à lire. L'échantillon en résultat contiendra toujours ce nombre exact de lignes, sauf si la table ne contient pas suffisamment de lignes, auquel cas la table entière est sélectionnée.

De la même façon que la méthode interne SYSTEM, SYSTEM_ROWS réalise un échantillonnage au niveau des blocs de la table, pour que l'échantillonnage ne soit pas complètement aléatoire mais pourrait être sensible aux effets d'une commande CLUSTER, tout spécialement si un petit nombre de lignes est demandé.

SYSTEM_ROWS ne supporte pas la clause REPEATABLE.

F.40.1. Exemples

Voici un exemple de sélection d'un échantillon d'une table avec SYSTEM_ROWS. Il faut tout d'abord installer l'extension :

CREATE EXTENSION tsm_system_rows;

Puis, vous pouvez l'utiliser dans une commande SELECT, par exemple :

SELECT * FROM ma_table TABLESAMPLE SYSTEM_ROWS(100);

Cette commande renverra un échantillon de 100 lignes à partir de la table ma_table (sauf si la table contient moins de 10 lignes visibles, auquel cas toutes les lignes sont renvoyées).