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
.
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
.
Ce module est considéré comme « trusted », ce qui signifie qu'il
peut être installé par des utilisateurs simples (sans attribut
SUPERUSER
) et qui ont l'attribut
CREATE
sur la base de données courante.
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).