Перейти к основному содержимому

tsm_system_time — метод выборки SYSTEM_TIME для TABLESAMPLE

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

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

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

Предложение REPEATABLE не поддерживается методом SYSTEM_TIME.

Модуль классифицируется как «надежный»: его разрешено устанавливать обычным пользователям, обладающим правом CREATE в текущей базе данных.

Примеры

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

CREATE EXTENSION tsm_system_time;

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

SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);

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