tsm_system_time

Модуль tsm_system_time предоставляет метод взятия выборки из таблицы SYSTEM_TIME, который можно использовать в предложении TABLESAMPLE команды SELECT.

Этот метод взятия выборки из таблицы принимает один целочисленный аргумент, задающий максимальное время в миллисекундах, которое отводится на чтение таблицы. Это обеспечивает возможность непосредственно управлять продолжительностью выполнения запроса за счет того, что размер выборки становится трудно предсказать. Результирующая выборка будет содержать столько строк, сколько удастся прочитать за заданное время, если только раньше не будет прочитана вся таблица.

Как и встроенный метод взятия выборки SYSTEM, SYSTEM_TIME производит взятие выборки на уровне блоков, так что выборка не будет полностью случайной, а может подвергаться эффектам кластеризации, особенно если запрашивается небольшое количество строк.

SYSTEM_TIME не поддерживает предложение REPEATABLE.

Этот модуль считается «доверенным», то есть его могут устанавливать обычные пользователи с правом CREATE в текущей базе данных.


Примеры

Ниже приведен пример отбора выборки из таблицы с помощью SYSTEM_TIME. Сначала установим расширение:

CREATE EXTENSION tsm_system_time;

Затем его можно использовать в команде SELECT, например так:

SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);

Эта команда возвратит такой объем выборки из my_table, какой удастся прочитать за 1 секунду (1000 миллисекунд). Конечно, если за 1 секунду можно прочитать всю таблицу, будут возвращены все ее строки.