php - JS、PHP、MySQL获取大数据

标签 php javascript mysql

我正在使用 Ajax 将查询发送到 PHP 服务器,然后运行 ​​SQL 查询以获取数据。因为查询涉及到三张表(两个大的),所以JOIN这三张表很慢。

然后我将 SQL 查询拆分为三个查询。它提高了效率(对于小数据集)。但对于大型数据集,由于 PHP 程序将三个查询一个一个地运行,并在每个查询之后处理结果,因此会有 30 秒的超时(默认)。我不想删除此默认设置。

为了避免超时,我也在考虑把这三个query都跑一遍,把结果返回给JS,让client端去处理。

还有其他方法吗?

添加

基本上,我想要三个输出,titleextviewsallviews,对于每个项目,WHERE extviews>somevaluetitle 来自一个小表,extviewsallviews 来自两个不同的大表。我把所有的字段都索引了,但是加入两个大表还是需要很长时间。

所以我首先聚合一个表以获得每个项目的 extviews,以及项目 id 的列表。将结果组织成一个数组,用于 JSON 输出到 JS。然后使用 id 列表,我得到每个项目的 title,并聚合另一个表以获得 allviews。然后我用新结果更新数组。

最佳答案

除非你的 mysql 服务器真的重载,否则使用连接通常会更快。我猜你已经在你的表上定义了索引? (用于连接条件和 where 子句中的字段) 在客户端进行处理也可能是个问题,因为您必须发送大量数据才能进行连接...

编辑: 如果所有“简单”优化都完成了,那么你有 2 个选择......你刚才描述的那个(如果可能的话,在客户端大小上做 - 你发送给客户端的 json 数组的大小(以字节为单位)是多少?) 您的另一种选择是在后台进行处理(通过 cron)并以某种方式缓存结果。

关于php - JS、PHP、MySQL获取大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9795588/

相关文章:

php - 设置文本框的最大值和最小值

javascript - 如何在 JavaScript 中将 Ajax 转换为 Fetch API?

javascript - 使用映射查找和函数覆盖数组中的对象

php - 无法在 Laravel 上使用 stdClass 类型的对象作为数组

sql - 如何禁用mysql的匹配查询的50%排除

javascript - Ajax Post 和 PHP session

php - Azure AD 身份验证问题 - 不记名 token 仅返回应用程序信息

php - 在 Laravel 4 中向表单添加类/id

javascript - 对 JavaScript 对象进行条件查询以使用 JQuery 返回特定名称

php - SQL 不会在数据库中创建任何内容