की हर दूसरी पंक्ति को लौटाना मैं एक ऐप के साथ काम कर रहा हूं जो phpActiveRecord
और mySQL का उपयोग सेंसर नेटवर्क से डेटा खींचने और क्लाइंट पर कई flot.js आलेखों पर प्लॉट करने के लिए करता है।एक SQL क्वेरी
ग्राफ़ प्रदर्शित करने वाले डेटा की सीमा को प्रभावित करने के लिए उपयोगकर्ता कई समय-समय पर चयन कर सकते हैं। 2hrs, 24hrs, 3 days and 1 week.
सेंसर प्रत्येक 60 सेकंड में डेटाबेस पर पोस्ट करते हैं, इसलिए ग्राफ को साजिश करते समय क्वेरी now and DATE_SUB(CUR_DATE - INTERVAL ? DAY)
के बीच सभी पंक्तियों में खींचती है? या तो 1, 3 या 7 आदि
हालांकि इसके परिणामस्वरूप बड़ी संख्या में पंक्तियों को (60,000 + for the full week!)
लौटाया जा रहा है और यह बड़ी देरी और सर्वर त्रुटियों का कारण बन रहा है।
मुझे पता है कि मैं php.ini
फ़ाइल में क्वेरी के लिए उपलब्ध अधिकतम मेमोरी को बड़े पैमाने पर बढ़ा सकता हूं, लेकिन यह शायद ही कोई अच्छा समाधान है, और गति के मुद्दे को हल नहीं करता है।
मेरा सवाल यह है कि, क्या कोई तरीका है कि मैं आवश्यक तिथि सीमा से केवल प्रत्येक दूसरी या तीसरी पंक्ति का चयन कर सकता हूं, जो उपयोगकर्ता अंतराल की लंबाई के आधार पर आसानी से चुन सकता है?
सी या जावा में मैं वैकल्पिक पंक्तियों को वापस करने के लिए एक मॉड्यूलो चुनने की तरह कुछ करता हूं लेकिन मैं वर्तमान ढांचे में ऐसा करने का तरीका नहीं सोच सकता।
किसी भी विचार की सराहना की जाएगी। धन्यवाद।
http://stackoverflow.com/questions/858746/how-do-you-select-every-n-th-row-from-mysql –
धन्यवाद जोश, ये बहुत अच्छे लिंक हैं, लेकिन दुर्भाग्य से ऐप किस तरह से है संरचित और गतिशील रूप से जेनरेट किया गया है कि उपयोगकर्ता चर का उपयोग अनिवार्य रूप से प्रश्न से बाहर है। प्रश्न slim.js रूटिंग फ्रेमवर्क द्वारा प्रबंधित किए जाते हैं और सीधे ब्राउज़र पृष्ठ द्वारा नहीं बुलाए जाते हैं। हालांकि मैं इसकी सराहना करता हूं! धन्यवाद। – bisslad
यदि आपकी आईडी बढ़ती है तो आप इसका उपयोग कर सकते हैं (एक "अजीब" जैसा है या 4/8 के एकाधिक हैं और इसलिए अपने WHERE कथन पर) भी: क्या आपने अपनी क्वेरी के लिए कैशिंग का उपयोग करने पर विचार किया है?भले ही आप mysql_result_cache का उपयोग कर सकें, आप अपने प्रदर्शन को बहुत बढ़ाएंगे। –