2016-05-17 2 views

ответ

0

Если 9,5 или выше, можно использовать TABLESAMPLE:

TABLESAMPLE sampling_method (argument [, ...]) [ REPEATABLE (seed) ] 

Согласно документации:

Оговорка TABLESAMPLE после table_name указывает на то, что указанный sampling_method должен быть использован для получения подмножества строк в таблице . Эта выборка предшествует применению любых других фильтров , таких как предложения WHERE. Стандартный дистрибутив PostgreSQL включает в себя два метода выборки: BERNOULLI и SYSTEM, а также другие методы измерения выборки в базе данных через расширения.

Методы отбора проб Бернулли и системы каждый принимает единый аргумент, который является частью таблицы к образцу, выраженной в процентах между 0 и 100. Этого аргументом может быть любым вещественным выражением. (Другие методы выборки могут принимать больше или разные аргументы .) Эти два метода возвращают случайно выбранный образец таблицы, которая будет содержать приблизительно указанный процент от строк таблицы. Метод BERNOULLI сканирует всю таблицу, и выбирает или игнорирует отдельные строки независимо с указанной вероятностью . Метод SYSTEM выполняет выборку на уровне блоков с каждым блоком , имеющим указанную вероятность выбора; возвращаются все строки в каждом выбранном блоке . Метод SYSTEM значительно быстрее , чем метод BERNOULLI, когда указаны небольшие проценты выборки: , но он может возвращать менее случайный образец таблицы в качестве результата эффектов кластеризации .

Необязательное предложение REPEATABLE указывает количество семян или выражение , используемое для генерации случайных чисел в рамках метода выборки. Начальное значение может быть любым значением, отличным от нуля, с плавающей запятой. Два запроса, которые указывают те же значения семян и аргументов, будут выбирать тот же образец таблицы, если таблица не была изменена между тем. Но разные значения семян обычно производят разные образцы. Если REPEATABLE не задано, то для каждого запроса выбирается новая случайная выборка. Обратите внимание, что некоторые методы выборочной выборки не принимают REPEATABLE и всегда будут производить новые образцы при каждом использовании.

Ссылка: http://www.postgresql.org/docs/current/static/sql-select.html

Детали из блога введения функции: http://blog.2ndquadrant.com/tablesample-in-postgresql-9-5-2/

Смежные вопросы