आपके पास left join venues
, लेकिन आपके पास where
. में शर्तें हैं शामिल हुए venues
. पर क्लॉज पंक्ति, इसलिए केवल सम्मिलित पंक्तियों को वापस किया जाएगा। हालांकि, यह एक साइड इश्यू है - पढ़ें कि आपको शामिल होने की आवश्यकता क्यों नहीं है।
अगला, यदि शहर vancouver
है , भी . की कोई आवश्यकता नहीं है देश या राज्य के लिए परीक्षण।
अंत में, यदि आप "वैंकूवर में भविष्य के कितने कार्यक्रम हैं" खोजने का प्रयास कर रहे हैं, तो आपको शामिल होने की आवश्यकता नहीं है, क्योंकि स्थल आईडी एक स्थिरांक है!
इसे आजमाएं:
select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate()
and te_id != 0
Mysql इंडेक्स का उपयोग venueid
. पर करेगा आपको एक संकेत का उपयोग किए बिना। अगर ऐसा नहीं होता है, तो इसे निष्पादित करें:
analyze events
जो अनुक्रमित कॉलम में डेटा वितरण के आंकड़ों को अपडेट करेगा। ध्यान दें कि यदि आपके बहुत से ईवेंट वैंकूवर में हैं, तो यह नहीं के लिए अधिक कुशल है एक अनुक्रमणिका का उपयोग करें (क्योंकि अधिकांश पंक्तियों को वैसे भी एक्सेस करना होगा)।