PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 12.22 » 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.

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.