I want to do query optimization. Here is my query with for loop. I need to create Procedure for this query. I am totally confused on how to create procedure.
$interval = $start->diff($end);
$period = $interval->format('%a');
$start_date = $start->format('Y-m-d');
$end_date = $end->format('Y-m-d');
$dsqls="";
for($i = $period; $i >=0; $i--){
if ($i == $period){
$dsqls .= "SELECT '$start_date' as click_date
union all ";
}else{
if($i==0){
$dsqls .= "SELECT date_sub('$end_date', interval $i day) as click_date ";
}else{
$dsqls .= "SELECT date_sub('$end_date', interval $i day) as click_date
union all ";
}
}
}
$sql ="select a.click_date,DATE_FORMAT(a.click_date,'%e') as nameday,
ifnull(b.count,0) as count
from ($dsqls) a
left join (
select date(created_at) as datetime, count(*) as count
from enquiries where delete_status='0'
group by date(created_at)
) b on a.click_date = b.datetime";
Does I want to create procedure for this full query or shall I only create procedure for loop and call procedure here. Is this possible? Pls give me ideas.