F.43. 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 unique
argument, de 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 d'une taille d'échantillon difficile à prédire. Ce
résultat contiendra autant de lignes qu'il a été possible d'en
lire pendant 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 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 sélectionné.
SYSTEM_TIME ne supporte pas la clause
REPEATABLE.
F.43.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ées.