PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.2 » Annexes » Modules et extensions supplémentaires fournis » tsm_system_time -- méthode d'échantillonage SYSTEM_TIME pour TABLESAMPLE

F.47. tsm_system_time -- méthode d'échantillonage SYSTEM_TIME pour TABLESAMPLE #

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.47.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.