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).