PostgreSQL 9.5+ kullanıyorsanız, TABLESAMPLE
rastgele bir kayıt seçmek .
İki varsayılan örnekleme yöntemi ( SYSTEM
ve BERNOULLI
), tablodaki toplam satır sayısının yüzdesi olarak döndürülecek satır sayısını belirtmenizi gerektirir.
-- Fetch 10% of the rows in the customers table.
SELECT * FROM customers TABLESAMPLE BERNOULLI(10);
Bu, uygun yüzdeyi seçmek için tablodaki kayıt miktarını bilmeyi gerektirir; bu, hızlı bir şekilde bulunamayabilir. Neyse ki, doğrudan döndürülecek satır sayısını belirtmenize izin veren tsm_system_rows
modül var.
CREATE EXTENSION tsm_system_rows;
-- Fetch a single row from the customers table.
SELECT * FROM customers TABLESAMPLE SYSTEM_ROWS(1);
Bunu ActiveRecord içinde kullanmak için, öncelikle taşıma işleminde uzantıyı etkinleştirin:
class EnableTsmSystemRowsExtension < ActiveRecord::Migration[5.0]
def change
enable_extension "tsm_system_rows"
end
end
Sonra from
sorgunun yan tümcesini değiştirin :
customer = Customer.from("customers TABLESAMPLE SYSTEM_ROWS(1)").first
Bilmiyorum SYSTEM_ROWS
örnekleme yöntemi tamamen rastgele olacaktır ya da sadece rastgele sayfadan ilk satırı dönerse.
Bu bilgilerin çoğu Gülçin Yıldırım tarafından yazılan bir 2ndQuadrant blog yazısından alınmıştır .