PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 13.17 » Annexes » Modules supplémentaires fournis » tsm_system_time

F.42. 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.

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.

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.

F.42.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.