यदि आप PostgreSQL 9.5+ का उपयोग कर रहे हैं, तो आप इसका लाभ उठा सकते हैं TABLESAMPLE
यादृच्छिक रिकॉर्ड का चयन करने लिए ।
दो डिफ़ॉल्ट नमूना तरीकों ( SYSTEM
और BERNOULLI
) के लिए आवश्यक है कि आप तालिका में पंक्तियों की कुल संख्या के प्रतिशत के रूप में लौटने के लिए पंक्तियों की संख्या निर्दिष्ट करें।
-- Fetch 10% of the rows in the customers table.
SELECT * FROM customers TABLESAMPLE BERNOULLI(10);
इसके लिए उपयुक्त प्रतिशत का चयन करने के लिए तालिका में रिकॉर्ड की मात्रा जानना आवश्यक है, जो कि जल्दी से खोजना आसान नहीं होगा। सौभाग्य से, वहाँ tsm_system_rows
मॉड्यूल है जो आपको सीधे लौटने के लिए पंक्तियों की संख्या निर्दिष्ट करने की अनुमति देता है।
CREATE EXTENSION tsm_system_rows;
-- Fetch a single row from the customers table.
SELECT * FROM customers TABLESAMPLE SYSTEM_ROWS(1);
ActiveRecord के भीतर इसका उपयोग करने के लिए, पहले एक्सटेंशन को माइग्रेशन में सक्षम करें:
class EnableTsmSystemRowsExtension < ActiveRecord::Migration[5.0]
def change
enable_extension "tsm_system_rows"
end
end
फिर from
क्वेरी के खंड को संशोधित करें :
customer = Customer.from("customers TABLESAMPLE SYSTEM_ROWS(1)").first
मुझे नहीं पता कि क्या SYSTEM_ROWS
नमूना विधि पूरी तरह से यादृच्छिक होगी या यदि यह सिर्फ एक यादृच्छिक पृष्ठ से पहली पंक्ति लौटाती है।
यह जानकारी गुलसीन यिलदिरिम द्वारा लिखे गए 2ndQuadrant ब्लॉग पोस्ट से ली गई थी ।