php - MySQLi 查询循环太慢
问题描述
好的,这是我的代码片段
foreach ($res->result() as $row)
{
$query = "SELECT count(*) AS count FROM
(SELECT COUNT(DISTINCT TASKS.task_ID) AS count
FROM
TASKS JOIN TRANSLATOR_LANGUAGES
JOIN PROJECT_USERS JOIN TRANSLATED_TASKS JOIN PROJECTS
ON
(TASKS.task_ID = TRANSLATED_TASKS.task_ID AND
TASKS.project_ID = PROJECT_USERS.project_ID AND
PROJECTS.project_ID = TASKS.project_ID AND
TRANSLATED_TASKS.language_code = TRANSLATOR_LANGUAGES.language_code AND
PROJECT_USERS.translator_ID = TRANSLATOR_LANGUAGES.translator_ID AND
PROJECT_USERS.language_code = TRANSLATOR_LANGUAGES.language_code)
WHERE
? = TRANSLATOR_LANGUAGES.language_code AND
? = TRANSLATOR_LANGUAGES.translator_ID AND
? = PROJECT_USERS.project_ID AND
TASKS.archived < ?
GROUP BY TASKS.task_ID, TRANSLATOR_LANGUAGES.language_code, PROJECTS.vote_threshold
HAVING " . $this->getHavingClause($filter) . ") STATS_PHP";
$res2 = $this->db->query($query, array($row->language_code,
$translator_ID,
$project_ID,
$archived))->result_array();
当我在 php5.2 中执行相同的代码时,它会在几秒钟内执行,但在 php7 (MySQLi) 中需要超过 500 秒才能完成。
我正在使用 codeigniter 3.1.0 进行开发,并且我正在尝试将 php5.2 基础 webApp 移动到 php7。
有人可以帮忙吗?
解决方案
推荐阅读
- tensorflow - RuntimeError: __iter__() 仅在 tf.function 内部或启用急切执行时受支持
- javascript - 你怎么写.classList.contains("class")的反义词,意思是classList不包含
- java - JTable:向所有选定的组件发送关键事件以检查所有选定的复选框
- django - Django rest框架 - 多个图像上传不显示
- python - 为什么我的 tkinter 程序在启动后不久就退出了?
- angular - angular-testing-library:getByRole 查询仅适用于 hidden: true 选项
- node.js - 如何使用 mongoose 将本地 mongodb 与 node.js 应用程序连接?
- python - UDP Socket 没有收到任何带有 python 的消息
- powershell - 当您的 json 文件包含键值对而不是键值对时,如何使用 export-CSV?
- django - Django 错误:用户匹配查询不存在