SELECT * FROM many_leads_lead_details WHERE location LIKE '%Los%Angeles%' AND (keywords LIKE '%Real%' or keywords LIKE '%Real Estate%' or keywords LIKE '%Real Estate Agent%')
above query is taking too much time as compared to localhost database.
the database taking time is hosted on another server, response time as below Localhost = 30.00 Seconds and on rds.amazonaws.com = 1.50 Minuts
$leads2 = LeadDetails::query(); $temp = ''; $location = str_replace(' ', '%', explode(',', $campaign->location)[0]); $leads2->Where('location', 'like', '%' . $location . '%'); //dd($leads2->get()); $leads2->Where(function ($query) use ($campaign, $temp) { foreach (explode(' ', $campaign->keywords) as $index => $keyword) { if ($index == 0) { $temp .= $keyword; } else { $temp .= ' ' . $keyword; } $query->OrWhere('keywords', 'like', '%' . $temp . '%'); } }); $leads2->get();
Answer
WHERE location LIKE '%Los%Angeles%' AND (keywords LIKE '%Real%' or keywords LIKE '%Real Estate%' or keywords LIKE '%Real Estate Agent%')
–>
WHERE MATCH(location, keywords) AGAINST ('Los Angeles Real Estate Agent')
and have
FULLTEXT(location, keywords)
This will run a lot faster.