我有以下的生产与记录的相应计数表,MySQL和PHP Laravel
- 人数= '565367'
- 捐助者数= '556325'
- telerec_recipients count ='115147'
- person_addresses count ='563183'
- person_emails计数= '106958'
- person_phones计数= '676474'
- person_sms计数= '22275'
在用户界面上端欲显示由一些数据应用一些连接或左连接,最后通过分组,排序和分页我生成一个JSON响应。因此,为了实现这个目的,我尝试了2种方法,其中一种由创建连接查询的视图文件,并应用在控制器中的where,group by和order by子句,其次通过直接激发我的连接的laravel语法控制器。
因为我在所有表中都有一个大数据,连接查询效果很好,但是当涉及到group by语句时,它需要很长时间才能执行。
帮助我,以优化或加快此过程。
我的示例查询是:
SELECT people.id as person_id,donors.donor_id,telerec_recipients.id as telerec_recipient_id,people.first_name,people.last_name,people.birth_date,
person_addresses.address_id,person_emails.email_id,person_phones.phone_id,person_sms.sms_id
FROM `people`
inner join `donors`
on `people`.`id` = `donors`.`person_id`
left join `telerec_recipients`
on `people`.`id` = `telerec_recipients`.`person_id`
left join `person_addresses`
on `people`.`id` = `person_addresses`.`person_id`
left join `person_emails`
on `people`.`id` = `person_emails`.`person_id`
left join `person_phones`
on `people`.`id` = `person_phones`.`person_id`
left join `person_sms`
on `people`.`id` = `person_sms`.`person_id`
GROUP BY `people`.`id`, `telerec_recipients`.`id`
ORDER BY `last_name` ASC LIMIT 25 offset 0;
的结果的解释:
请提供解释的结果,直到任何建议的解决方案是纯粹的猜测。 – Shadow
@Shadow,我需要为您提供上述查询的输出吗? –
不,解释的结果。 – Shadow