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.