mysql - SQL Joining Autoincrement pseudo parent_id -


नमस्ते मेरे पास लाइव पाठ्यक्रम डेटा की एक साधारण तालिका है

t_course_live ->
आईडी (आईएनटी) (प्राथमिक कुंजी ऑटोऑन्सेन्मेंट)
व्यापार_टाईमस्टैम्प डाटैटईम
दर फ्लोैट

  आईडी | Trade_timestamp | दर 1 | 2014-04-28 20:53:32 | 1.38629 2 | 2014-04-28 20:53:34 | 1.38623 3 2014-04-28 20:53:39 | 1.38625  

इसलिए मुझे यकीन है कि ऑटो_इन्रिट्रेट अनुक्रम में छेद है और ट्रेड_टाईमस्टैप्स हमेशा आईड्स => ट्रेड_टाईमस्टैंप (आईडी) के साथ बढ़ता रहता है & lt; Trade_timestamp (id + 1)

मैं "अगले माता पिता" के साथ प्रत्येक पंक्ति में शामिल होना चाहता हूं। इसका मतलब आईआर + 1 के साथ पंक्ति है, इसलिए मैं टाइमस्टैम्प के बीच अंतर की गणना कर सकता हूं। मेरा एसक्यूएल दृष्टिकोण निम्न की तरह दिखता है, जो काम करता है, लेकिन बहुत लंबा रास्ता लेता है, क्योंकि पहले से ही 900k + प्रविष्टियां हैं।

  SELECT ... (t1.trade_timesamp और t2 के साथ गणना करना .trade_timestamp) ... से t_course_live t1 बाएं जुड़ें (चयन करें t2_inner। *, (T2_inner.id + 1) के रूप में अगली_ओआर से t_course_live t2_inner WHERE DATE (t2_inner.trade_timestamp) = '2014-04-28') एएस टी 2 ऑन टी 1 Id = t2.next_row WHERE DATE (t1.trade_timestamp) = '2014-04-28'  

एक्प्लिन के विवरण के साथ आप प्राप्त करते हैं:

  id | Select_type | टेबल | प्रकार | संभव_कीज | कुंजी | Key_len | रेफरी | पंक्तियाँ | अतिरिक्त 1 | सरल | टी 1 | सभी | नल | नल | नल | नल | 943429 | जहां 1 का उपयोग करना | सरल | टी 2_इनर | सभी | नल | नल | नल | नल | 943429 | जहां का उपयोग करना; जुड़ने के बफ़र का उपयोग करना (फ्लैट, बीएनएल में शामिल होना)  

तो सवाल यह है कि इस क्वेरी को तेज़ी से कैसे करना है, आईडी + 1 के साथ आईडी में शामिल होना? यदि यह संभव है, तो मैं बिना किसी पैरेंट_आईडी कॉलम के जाना चाहूंगा।

इस प्रश्न को फिर से लिखें:

  SELECT ... (t1.trade_timesamp और t2.trade_timestamp के साथ गणना करते हैं) ... t_course_live t1 बाएं जुड़ें t_course_live t2 पर t1.id = t2.id + 1 WHERE t1.trade_timestamp & gt; = '2014-04-28' और t1.trade_timestamp & lt; '2014-04-29' और t2.trade_timestamp> = '2014-04-28' और टी 2.ट्रैडे_टिमस्टैम्प & lt; '2014-04-29'  

DATE का उपयोग (कॉलम) फ़ंक्शन और एक सबक्जरी के साथ joinin MySQL को अनुक्रमित करने से रोकता है।

मुझे लगता है कि trade_timestamp पर एक सूचकांक पहले से ही बनाया गया है।

=========== संपादित करें =========================

मेरे पिछले उत्तर में एक छोटी गलती है।
उपर्युक्त क्वेरी मूल प्रश्न के बराबर नहीं है, क्योंकि ये स्थितियां:

  और t2.trade_timestamp> = = '2014-04-28' और टी 2.ट्रेट_टाईमस्टैम्प & lt; '2014-04-29'  

क्वेरी को बाएं जुड़ने से नियमित रूप से जुड़ने में परिवर्तित कर देता है।

एक सही क्वेरी है:

  SELECT ... (t1.trade_timesamp और t2.trade_timestamp के साथ गणना करना) ... t_course_live t1 छोड़कर t_corse_live t2 पर t1.id = t2.id + 1 और t2.trade_timestamp & gt; = '2014-04-28' और T2.trade_timestamp & lt; '2014-04-29' WHERE t1.trade_timestamp & gt; = '2014-04-28' और t1.trade_timestamp & lt; '2014-04-29'  

Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

lua - HowTo create a fuel bar -