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

Postgres में टाइमस्टैम्प को 5 मिनट तक छोटा करने का सबसे तेज़ तरीका क्या है?

मैं उसी चीज़ पर हैरान हो रहा था। मुझे ऐसा करने के दो वैकल्पिक तरीके मिले, लेकिन आपने जो सुझाव दिया वह तेज़ था।

मैंने अनौपचारिक रूप से हमारी एक बड़ी टेबल के खिलाफ बेंचमार्क किया। मैंने क्वेरी को पहली 4 मिलियन पंक्तियों तक सीमित कर दिया। डीबी कैशिंग के कारण किसी को अनुचित लाभ देने से बचने के लिए मैंने दो प्रश्नों के बीच बारी-बारी से किया।

युग/यूनिक्स समय से गुजर रहा है

SELECT to_timestamp(
    floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min'))
    * EXTRACT(epoch FROM interval '5 min')
) FROM huge_table AS ht LIMIT 4000000

(ध्यान दें कि यह timestamptz उत्पन्न करता है भले ही आपने समय क्षेत्र अनजान डेटाटाइप का इस्तेमाल किया हो)

परिणाम

  • 1 भागो :39.368 सेकंड
  • 3 रन करें :39.526 सेकंड
  • 5 भागो :39.883 सेकंड

date_trunc और date_part का उपयोग करना

SELECT 
    date_trunc('hour', ht.time) 
    + date_part('minute', ht.time)::int / 5 * interval '5 min'
FROM huge_table AS ht LIMIT 4000000

परिणाम

  • 2 भागो :34.189 सेकंड
  • 4 रन करें :37.028 सेकंड
  • 6 रन करें :32.397 सेकंड

सिस्टम

  • DB संस्करण:x86_64-pc-linux-gnu पर PostgreSQL 9.6.2, gcc द्वारा संकलित (उबंटू 4.8.2-19ubuntu1) 4.8.2, 64-बिट
  • कोर:Intel® Xeon®, E5-1650v2, Hexa-Core
  • रैम:64 जीबी, डीडीआर3 ईसीसी रैम

निष्कर्ष

आपका संस्करण तेज़ प्रतीत होता है। लेकिन मेरे विशिष्ट उपयोग के मामले में पर्याप्त तेज़ नहीं है। समय निर्दिष्ट न करने का लाभ युग संस्करण को अधिक बहुमुखी बनाता है और क्लाइंट साइड कोड में सरल पैरामीटरकरण उत्पन्न करता है। यह 2 hour . को संभालता है अंतराल और साथ ही 5 minute date_trunc . से टकराए बिना अंतराल समय इकाई तर्क। अंत में, मेरी इच्छा है कि इस बार इकाई तर्क को समय अंतराल तर्क में बदल दिया गया था।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - तालिका नाम के रूप में गतिशील मान

  2. PostgreSQL 12:विदेशी कुंजियाँ और विभाजित तालिकाएँ

  3. मूडल पोस्टग्रेएसक्यूएल डेटाबेस की स्वचालित विफलता

  4. मैं PostgreSQL डेटाबेस में सभी तालिकाओं को कैसे छोड़ सकता हूं?

  5. pgmemcache बनाम अनंत कैश