PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

सक्रिय रिकॉर्ड क्वेरी में समय आधारित प्राथमिकता

कुछ अन्य डेटाबेस (जैसे Oracle) के विपरीत PostgreSQL में पूरी तरह कार्यात्मक boolean . है प्रकार। आप इसका उपयोग सीधे कर सकते हैं ORDER BY . में एक CASE applying लागू किए बिना खंड कथन - वे अधिक जटिल परिस्थितियों के लिए उपयुक्त हैं।

boolean . के लिए क्रम से लगाएं मान है:

FALSE -> TRUE -> NULL

यदि आप ORDER BY bool_expression DESC , आप ऑर्डर को इसमें उल्टा कर देते हैं:

NULL -> TRUE -> FALSE

अगर आप TRUE चाहते हैं पहला और NULL अंत में, NULLS LAST . का उपयोग करें ORDER BY . का खंड :

ORDER BY (featured AND created_at > now() - interval '11 days') DESC NULLS LAST  
       , created_at DESC

बेशक, NULLS LAST केवल तभी प्रासंगिक है जब featured या created_at कर सकते हैं NULLहोना . यदि कॉलम परिभाषित हैं NOT NULL , तो परेशान न हों।

साथ ही, FALSE NULL . से पहले सॉर्ट किया जाएगा . यदि आप इन दोनों के बीच अंतर नहीं करना चाहते हैं, तो आप या तो CASE . पर वापस आ गए हैं कथन, या आप NULLIF() in में फेंक सकते हैं या COALESCE()

ORDER BY NULLIF(featured AND created_at > now() - interval '11 days'), FALSE)
                                                                DESC NULLS LAST
       , created_at DESC

प्रदर्शन

ध्यान दें, मैंने कैसे इस्तेमाल किया:

created_at > now() - interval '11 days'

और नहीं :

now() - created_at < interval '11 days'

पहले उदाहरण में, दाईं ओर का व्यंजक एक स्थिरांक है जिसकी गणना एक बार . की जाती है . फिर मिलान पंक्तियों को देखने के लिए एक अनुक्रमणिका का उपयोग किया जा सकता है। बहुत कुशल।

उत्तरार्द्ध का आमतौर पर एक सूचकांक के साथ उपयोग नहीं किया जा सकता है। प्रत्येक पंक्ति के लिए एक मान की गणना की जानी चाहिए, इससे पहले कि इसे निरंतर अभिव्यक्ति के खिलाफ दाईं ओर चेक किया जा सके। अगर आप इससे बच सकते हैं तो ऐसा न करें। कभी!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. भौतिक पथ के साथ पेड़ को छांटना?

  2. तालिका को पोस्टग्रेज करने के लिए स्पार्क डेटाफ्रेम यूपीएसईआरटी

  3. pghoard विकल्प - क्लस्टरकंट्रोल के साथ PostgreSQL बैकअप प्रबंधन

  4. एसक्यूएल:उन रिकॉर्ड्स का चयन करें जहां सभी जुड़े हुए रिकॉर्ड कुछ शर्तों को पूरा करते हैं

  5. संबंध मौजूद नहीं है