2016-05-17 61 views

回答

0

如果9.5或更高版本,可以使用TABLESAMPLE

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

根據文檔:

一個表名後TABLESAMPLE子句指示指定 sampling_method應該用於檢索的一個子集 表中的行。此採樣先於任何其他 過濾器(如WHERE子句)的應用。標準的PostgreSQL發行版 包括兩種採樣方法,BERNOULLI和SYSTEM,以及其他採樣方法可以通過擴展安裝在數據庫中。

伯努利和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/