आइए इसके एक हिस्से पर एक नजर डालते हैं।
if(!empty($filter['keyword'])) {
$leads=$leads->where(function ($q) use ($filter) {
$q->where('ld_name','like', "%".$filter['keyword']."%")
->orWhere('ld_email','like', "%".$filter['keyword']."%")
->orWhere('ld_phoneno','like', "%".$filter['keyword']."%");
});
}
यह कीवर्ड-मिलान योजना स्वाभाविक रूप से, और विनाशकारी रूप से धीमी है। यह वाक्पटु और देशी SQL दोनों में धीमा है। MySQL में किए बिना काम करने का कोई तरीका नहीं है। पूर्ण तालिका स्कैन . यही है, इसे मैचों की तलाश में आपकी तालिका की प्रत्येक पंक्ति की जांच करनी चाहिए और MySQL में, किसी भी अनुक्रमित लुकअप योजना का फायदा नहीं उठा सकता है। क्यों?
column LIKE 'constant%'
column
. पर एक इंडेक्स देख सकते हैं और 'constant'
. से शुरू होने वाले किसी भी मान को तुरंत ढूँढ़ें . लेकिन
column LIKE '%constant%'
तालिका में प्रत्येक मान को देखना है। अग्रणी %
इंडेक्स लुकअप को बेकार बनाता है।
MySQL में आपको MySQL की FULLTEXT सर्चिंग अपने कीवर्ड लुकअप को संभालने के तरीके के रूप में। (पोस्टग्रेएसक्यूएल के हाल के संस्करण इस तरह की क्वेरी को सीधे एक अलग तरह के इंडेक्स के साथ संभाल सकते हैं, लेकिन MySQL नहीं।)