mysql - SQL indexing in a large table with inner join -
हमारे पास बड़ी टेबल है (16 मिलियन और गिनती) तालिका की संरचना है:
id_PIT | आईडी_इनस्ट्रूममेंट | Id_data_label | तिथि | मूल्य | नोट (नल योग्य)
सबसे ज्यादा इस्तेमाल किया जाने वाला अनुरोध है:
हम एक तालिका में सभी तिथियां लेते हैं:
INSERT #DTS चुनें अंतर तिथि डीटी से point_in_time जहां तारीख @startDate और @endDate तब हम करते हैं:
# का चयन करें मूल्य V में प्रविष्ट करें, तारीख डी से Point_in_time WHERE id_instrument = @idInstrument और id_data_label = @idDataLable और तारीख DATEDD (महीने, -6, @start date) और @endDate अंतिम प्रश्न यह है कि हम इन दोनों तालिकाओं में आंतरिक रूप से जुड़ते हैं इस तरह से:
SELECT # DTS.DT D, # PIT.VV से # डीटीएस बाएं बाहरी जॉइन # पीट ऑन (SELECT MAX (# PIT.D) #PIT से #PIT # DTS.DT & Gt; = # PIT.D) = # पीआईटी.डी WHERE # DTS.DT के बीच @startDate और @endDate आदेश # DTS.DT तो समस्या क्या है .. यह भी लेता है लंबे (जैसे 50 सेकंड) और यह हमारे विकास में हमें वापस पकड़ रहा है। हमने Point_in_time पर कुछ विभिन्न अनुक्रमित करने की कोशिश की थी, लेकिन हमने सोचा कि सूचकांक (id_data_label, id_instrument) मदद करेगा लेकिन आईडी नहीं होगा।
क्या कोई हमें इसके साथ मदद कर सकता है? हमें किस इंडेक्स का उपयोग करना चाहिए या कोई अन्य तरीका है जिसे हम अपने डेटाबेस को अनुकूलित कर सकते हैं
Comments
Post a Comment