gpt4 book ai didi

php - 在 MySQL 中提取 100,000 行而不停止

转载 作者:行者123 更新时间:2023-11-30 01:20:51 27 4
gpt4 key购买 nike

我的数据库当前有超过 200,000 条记录,并且我的查询有 3 个联接,我担心通过这些联接选择行可能会花费太长时间并导致我的查询停止。是否有推荐的方法在执行 SELECT 时选择如此多的记录(例如某些预加载器)?我对任何事情都持开放态度。

我的查询

-- Select all records
SELECT cust.firstname, cust.lastname, cust.phone1, cust.phone2, cust.mobile1, cust.mobile2, cust.regas, cust.regpol,
cust.province, cust.city, cust.brgy, cust.unit, cust.vill, cust.condo, cust.servtype,
cust.primary, cust.override_pst, dist.name, order.created, order.branch_id 'selectedbranch', order.status,
order.delivery_date, order.date_acknowledged, order.date_dispatched, order.date_delivered, order.date_cancelled
FROM sl_customers cust
LEFT JOIN sl_orders `order` ON order.customer_id = cust.id
LEFT JOIN sl_branches branch ON order.branch_id = branch.id
LEFT JOIN sl_distributors dist ON branch.distributor_id = dist.id
ORDER BY order.id DESC

而且,是的,用于 JOIN 的所有列都已建立索引。

最佳答案

您可以考虑将查询作为无缓冲查询来执行。大型结果集会占用大量内存,而在php中,大多数常见的数据库扩展默认都会将结果缓冲到内存中以提高速度和易用性,但代价是内存消耗和响应延迟。对于大多数较小的结果集来说,这是一个很好的默认值。

http://php.net/manual/en/mysqlinfo.concepts.buffering.php

如果当前的内存使用水平可以接受,我会坚持使用缓冲查询。从程序员的角度来看,它们更容易处理。

关于php - 在 MySQL 中提取 100,000 行而不停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com