我最近遇到过这样一种情况:从两个表中查询每个表有大约16k的记录。
执行原始SQL会导致响应时间缩短到几秒钟,如果我选择坚持使用ORM查询,则会导致nginx请求超时,因为查询需要超过1分钟才能处理。
有没有人遇到类似的情况,我知道可以使用Doctrine进行繁重的查询。
实现看起来像这样。有关正在使用的体系结构的更详细说明:https://stackoverflow.com/a/19771835/540771
Laravel App默认连接连接到DB 1(具有连接到DB 2的详细信息)。根据正确的连接连接到适当的DB。
DB 1:
connections table ( id, db_name, db_username, db_password, hostname, port)
DB 2:
customer ( customer_id, name )
customer_details ( customer_id, email, etc ... )
查询在DB 2上执行,如下所示:
SELECT *
FROM customers as c LEFT JOIN customer_details as cd
ON c.customer_id=cd.customer_id
ORDER BY c.created_at DESC
表客户和客户详细信息的行数均为16k。关系是1 .. *,但业务规则以某种方式限制它,以便始终有1个客户记录映射到1个customer_details记录中。
获取到Datatable中的结果。将添加分页以限制返回的记录数。