F.41. tsm_system_time
Le module tsm_system_time fournit la
méthode d'échantillonage de table SYSTEM_TIME, qui peut être utilisé par la clause
TABLESAMPLE d'une commande SELECT(7).
Cette méthode d'échantillonnage d'une table accepte un argument
du type nombre à virgule flottante correspondant au nombre
maximum de millisecondes passé à lire la table. Ceci vous donne
un contrôle direct sur la durée de la requête, au prix que la
taille de l'échantillon devient difficile à prédire.
L'échantillon résultat contiendra autant de lignes qu'il a été
possible d'en lire dans la durée spécifiée, sauf si la table a
pu être lue entièrement avant.
De la même façon que la méthode interne SYSTEM, SYSTEM_TIME
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.41.1. Exemples
Voici un exemple de sélection d'un échantillon d'une table
avec SYSTEM_TIME. Il faut tout
d'abord installer l'extension :
CREATE EXTENSION tsm_system_time;
Puis, vous pouvez l'utiliser dans une commande SELECT, par exemple :
SELECT * FROM ma_table TABLESAMPLE SYSTEM_TIME(1000);
Cette commande renverra autant de lignes de ma_table qu'il a pu en lire en une
seconde (1000 millisecondes). Bien sûr, si toute la table
peut être lue en moins d'une seconde, toutes les lignes
seront renvoyés.