मेरे पास एकाधिक दिनांक प्रकार फ़ील्ड वाले एक MySQL डीबी तालिका है। मुझे इस टेबल पर अलग-अलग चयन प्रश्नों की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि उसी महीने से रिकॉर्ड खोजने के लिए सबसे अच्छा तरीका कौन सा है।एक महीने के भीतर रिकॉर्ड्स खोजने के लिए कुशल चयन क्वेरी
मैं जानता हूँ कि मैं निम्नलिखित कर सकते हैं:
SELECT *
FROM table
WHERE MONTH(somedate) = 5
AND YEAR(somedate) = 2015
लेकिन मैं पढ़ने कि कुशल नहीं है और है कि मैं वास्तविक तिथियां उपयोग करने के साथ जाना चाहिए रखने के लिए, यानी
SELECT *
FROM table
WHERE somedate BETWEEN '2015-05-01' AND '2015-05-31'
हालांकि, सभी मैं PHP से आने वाले चर के रूप में महीना और वर्ष होगा। यदि मैं दूसरे विकल्प के साथ जाता हूं तो मैं महीने के आखिरी दिन की आसानी से और त्वरित गणना कैसे करूं?
मुझे 'डीबी' में 'महीने/वर्ष' से धीमा होने और 'जैसे', मेरे डीबी पर मिल रहा है। महीना/वर्ष = 'पंक्तियां दिखा रहा है 0 - 2 9 (77 कुल, प्रश्न 0.0825 सेकेंड लिया गया)'। = 'पंक्तियों को दिखा रहा है 0 - 2 9 (77 कुल, क्वेरी ने 0.1059 सेकेंड लिया) '। पसंद = 'पंक्तियां दिखा रहा है 0 - 2 9 (77 कुल, प्रश्न 0.0815 सेकंड लिया)'। यह 7k पंक्ति तालिका पर है। हालांकि यह धागा दूसरी दिशा में इंगित करता है। http://dba.stackexchange.com/questions/96245/mysql-date-field-filter-by-like-vs-month – chris85
MySQL 'somedate' के अग्रणी कॉलम वाले इंडेक्स का प्रभावी उपयोग कर सकता है। यदि आपके पास ऐसी कोई अनुक्रमणिका नहीं है, तो आप एक उदाहरण बना सकते हैं। 'तालिका पर इंडेक्स बनाएं (somedate) '। जब तक तालिका तालिका में पंक्तियों में से 10% से कम लौट रही है, तो सूचकांक क्वेरी को बहुत तेज बना देगा। किसी दिन कॉलम के चारों ओर लिपटे कार्यों के साथ, MySQL को तालिका में प्रत्येक पंक्ति पर उन कार्यों का मूल्यांकन करना होगा। – spencer7593
निष्पादन योजना देखने के लिए 'EXPLAIN' का उपयोग करें। प्रदर्शन तुलना के लिए, सुनिश्चित करें कि क्वेरी परिणाम क्वेरी कैश से वापस नहीं आ रहे हैं। ऐसा करने के कई तरीके हैं, उदाहरण के लिए'SQL_NO_CACHE' हिट, क्वेरी में उपयोगकर्ता परिभाषित चर शामिल करें, क्वेरी कैश इत्यादि अक्षम करें। (हम वास्तव में हमारे MySQL सर्वर को केवल * क्वेरी * कैश करने के लिए कॉन्फ़िगर किया गया है जिसमें 'SQL_CACHE' संकेत शामिल है , इसलिए हम नियंत्रित करते हैं कि कौन से प्रश्नों को कैश किया जा सकता है, और परिणामों को उन प्रश्नों से बाहर निकालने से रोकें जिन्हें हमें कैश की आवश्यकता नहीं है।) – spencer7593