F.42. tsm_system_rows
Le module tsm_system_rows fournit la
méthode d'échantillonage de table SYSTEM_ROWS, qui peut être utilisé dans 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 résultant 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.
Comme la méthode interne SYSTEM,
SYSTEM_ROWS réalise un échantillonnage
au niveau des blocs de table, si bien que l'échantillonnage
n'est pas complètement aléatoire mais peut être sensible à un
effet de regroupement (clustering), surtout si un petit
nombre de lignes est demandé.
SYSTEM_ROWS ne supporte pas la clause
REPEATABLE.
F.42.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 depuis
la table ma_table (sauf si la
table contient moins de 100 lignes visibles, auquel cas
toutes les lignes sont renvoyées).