首页 > 解决方案 > 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。

有人可以帮忙吗?

标签: phpmysqlmysqlicodeigniter-3

解决方案


推荐阅读