极慢的MySQL选择查询

时间:2015-01-20 08:29:25

标签: mysql sql mysql-5.1

我试图理解为什么选择查询在我的笔记本电脑上运行得非常快,而服务器上的速度却非常慢。在服务器上1.388秒时,查询需要49.670秒才能在笔记本电脑上运行。两种模式都是相同的,因为我从笔记本电脑导出了该方案并将其导入服务器。两者都在WAMP 2.0上运行MySQL 5.1.36。

SQL转储

https://db.tt/4TvuOWbD

查询

SELECT form.id                                                                                     AS 'Form ID',
       DATE_FORMAT(form.created_on, '%d %b %Y')                                                    AS 'Created On - Date',
       DATE_FORMAT(form.created_on, '%h:%i %p')                                                    AS 'Created On - Time',
       department.name                                                                             AS 'Department',
       section.name                                                                                AS 'Section',
       reporting_to_1.id                                                                           AS 'Reporting To 1 - System ID',
       reporting_to_1.real_name                                                                    AS 'Reporting To 1 - Name',
       reporting_to_1_department.name                                                              AS 'Reporting To 1 - Department',
       reporting_to_1_section.name                                                                 AS 'Reporting To 1 - Section',
       CONVERT(IFNULL(reporting_to_2.id, '') USING utf8)                                           AS 'Reporting To 2 - System ID',
       IFNULL(reporting_to_2.real_name, '')                                                        AS 'Reporting To 2 - Name',
       IFNULL(reporting_to_2_department.name, '')                                                  AS 'Reporting To 2 - Department',
       IFNULL(reporting_to_2_section.name, '')                                                     AS 'Reporting To 2 - Section',
       form_type.type                                                                              AS 'Form Type',
       CONVERT(IF(form.customer_number = 0, '-', form.customer_number) USING utf8)                 AS 'Customer Number', 
       form.customer_name                                                                          AS 'Customer Name',
       form.customer_contract                                                                      AS 'Customer Contract No.',
       DATE_FORMAT(form.action_date, '%d %b %Y')                                                   AS 'Action - On Date',
       CONCAT('http://cns', attachment_1.path, '/', attachment_1.filename_generated)               AS 'Attachment - 1',
       CONCAT('http://cns', attachment_2.path, '/', attachment_2.filename_generated)               AS 'Attachment - 2',
       agent.name                                                                                  AS 'Agent - Name',
       agent.tag                                                                                   AS 'Agent - Tag',
       agent.type                                                                                  AS 'Agent - Type',
       CONVERT(IFNULL(agent_teamleader.real_name, '') USING utf8)                                  AS 'Agent - Team Leader - Name',
       creator.id                                                                                  AS `creator id`, 
       creator.real_name                                                                           AS `creator full name`, 
       CONVERT(IFNULL(authorizing_teamleader_user.id, '') USING utf8)                              AS `processed by - team leader - system id`, 
       IFNULL(authorizing_teamleader_user.real_name, '')                                           AS `processed by - team leader - name`, 
       CONVERT(IFNULL(authorizing_teamleader_user.employee_id, '') USING utf8)                     AS `processed by - team leader - employee id`, 
       CONVERT(IFNULL(DATE_FORMAT(authorizing_teamleader.action_date, '%d %b %Y'), '') USING utf8) AS `processed on - team leader - date`, 
       CONVERT(IFNULL(DATE_FORMAT(authorizing_teamleader.action_date, '%h:%i %p'), '') USING utf8) AS `processed on - team leader - time`, 
       CONVERT(IFNULL(authorizing_manager_user.id, '') USING utf8)                                 AS `processed by - manager - system id`, 
       IFNULL(authorizing_manager_user.real_name, '')                                              AS `processed by - manager - name`, 
       CONVERT(IFNULL(authorizing_manager_user.employee_id, '') USING utf8)                        AS `processed by - manager - employee id`, 
       CONVERT(IFNULL(DATE_FORMAT(authorizing_manager.action_date, '%d %b %Y'), '') USING utf8)    AS `processed on - manager - date`, 
       CONVERT(IFNULL(DATE_FORMAT(authorizing_manager.action_date, '%h:%i %p'), '') USING utf8)    AS `processed on - manager - time`, 
       CONVERT(IFNULL(authorizing_director_user.id, '') USING utf8)                                AS `processed by - director - system id`, 
       IFNULL(authorizing_director_user.real_name, '')                                             AS `processed by - director - name`, 
       CONVERT(IFNULL(authorizing_director_user.employee_id, '') USING utf8)                       AS `processed by - director - employee id`, 
       CONVERT(IFNULL(DATE_FORMAT(authorizing_director.action_date, '%d %b %Y'), '') USING utf8)   AS `processed on - director - date`, 
       CONVERT(IFNULL(DATE_FORMAT(authorizing_director.action_date, '%h:%i %p'), '') USING utf8)   AS `processed on - director - time`, 
       status.name                                                                                 AS `status`,
       CONVERT(IF(status.name = 'Pending', '', user_status_by.id) USING utf8)                      AS `status by - system id`, 
       IFNULL(user_status_by.real_name, '')                                                        AS `status by - name`, 
       CONVERT(IFNULL(user_status_by.employee_id, '') USING utf8)                                  AS `status by - employee id`, 
       IFNULL(user_status_by_role.name, '')                                                        AS `status by - position`, 
       CONVERT(IFNULL(DATE_FORMAT(form.status_on, '%d %b %Y'), '') USING utf8)                     AS `status on - date`, 
       CONVERT(IFNULL(DATE_FORMAT(form.status_on, '%h:%i %p'), '') USING utf8)                     AS `status on - time`, 
       CONCAT('http://cns/pdf/', form.pdf)                                                         AS `pdf`
FROM   forms AS form
       JOIN (sections AS section, 
            departments AS department) 
         ON form.section_id = section.id 
             AND section.department_id = department.id 
       JOIN (users AS reporting_to_1, 
            sections AS reporting_to_1_section, 
            departments AS reporting_to_1_department)
         ON reporting_to_1.id = form.reporting_to_1 
             AND reporting_to_1.section_id = reporting_to_1_section.id 
             AND reporting_to_1_section.department_id = reporting_to_1_department.id 
       LEFT JOIN (users AS reporting_to_2, sections AS reporting_to_2_section, 
                 departments AS reporting_to_2_department)
         ON reporting_to_2.id = form.reporting_to_2 
             AND reporting_to_2.section_id = reporting_to_2_section.id 
             AND reporting_to_2_section.department_id = reporting_to_2_department.id 
       JOIN form_type 
         ON form.type = form_type.id 
       LEFT JOIN attachments AS attachment_1 
         ON form.id = attachment_1.form 
             AND attachment_1.id = ( SELECT min(id) 
                                     FROM   attachments 
                                     WHERE  form = form.id) 
       LEFT JOIN attachments AS attachment_2 
         ON form.id = attachment_2.form 
             AND attachment_2.id = ( SELECT max(id) 
                                     FROM   attachments 
                                     WHERE  form = form.id) 
       LEFT JOIN (agents AS agent,
                 users AS agent_teamleader,
                 branches AS branch) 
         ON form.id = agent.form_id 
             AND agent_teamleader.id = agent.teamleader_id 
             AND branch.id = agent.branch_id 
       JOIN users AS creator 
          ON form.user_id = creator.id 
       LEFT JOIN (authorizers AS authorizing_teamleader,
                 users AS authorizing_teamleader_user) 
          ON authorizing_teamleader.form_id = form.id 
             AND authorizing_teamleader_user.id = authorizing_teamleader.`from` 
             AND authorizing_teamleader_user.role = 't' 
       LEFT JOIN (authorizers AS authorizing_manager,
                 users AS authorizing_manager_user) 
          ON authorizing_manager.form_id = form.id 
             AND authorizing_manager_user.id = authorizing_manager.`from` 
             AND authorizing_manager_user.role = 'm' 
       LEFT JOIN (authorizers AS authorizing_director,
                 users AS authorizing_director_user) 
          ON authorizing_director.form_id = form.id 
             AND authorizing_director_user.id = authorizing_director.`from` 
             AND authorizing_director_user.role = 'd' 
       JOIN status 
          ON form.status = status.id 
       LEFT JOIN (users AS user_status_by,
                 roles AS user_status_by_role) 
          ON user_status_by.id = form.status_by_user_id 
             AND user_status_by_role.id = user_status_by.role 
GROUP  BY form.id 
ORDER  BY form.id DESC 
LIMIT 0, 100

EXPLAIN EXTENDED - SERVER

+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+-------------+---------+------------------------------------------+------+----------+---------------------------------+
| id |    select_type     |            table            |  type  |                         possible_keys                          |     key     | key_len |                   ref                    | rows | filtered |              Extra              |
+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+-------------+---------+------------------------------------------+------+----------+---------------------------------+
|  1 | PRIMARY            | section                     | ALL    | PRIMARY,IDX_DEPARTMENT                                         |             |         |                                          |   18 |      100 | Using temporary; Using filesort |
|  1 | PRIMARY            | department                  | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.section.department_id                |    1 |      100 |                                 |
|  1 | PRIMARY            | form                        | ref    | IDX_USER_ID,IDX_REPORTING_TO_1,IDX_SECTION,IDX_TYPE,IDX_STATUS | IDX_SECTION |       4 | cns.section.id                           |  528 |      100 |                                 |
|  1 | PRIMARY            | status                      | eq_ref | PRIMARY                                                        | PRIMARY     |       3 | cns.form.status                          |    1 |      100 |                                 |
|  1 | PRIMARY            | form_type                   | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.form.type                            |    1 |      100 |                                 |
|  1 | PRIMARY            | authorizing_teamleader      | ref    | IDX_FORM_ID,IDX_FROM_USER_ID                                   | IDX_FORM_ID |       4 | cns.form.id                              |    1 |      100 |                                 |
|  1 | PRIMARY            | authorizing_teamleader_user | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY     |       4 | cns.authorizing_teamleader.from          |    1 |      100 |                                 |
|  1 | PRIMARY            | authorizing_manager         | ref    | IDX_FORM_ID,IDX_FROM_USER_ID                                   | IDX_FORM_ID |       4 | cns.form.id                              |    1 |      100 |                                 |
|  1 | PRIMARY            | authorizing_manager_user    | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY     |       4 | cns.authorizing_manager.from             |    1 |      100 |                                 |
|  1 | PRIMARY            | authorizing_director        | ref    | IDX_FORM_ID,IDX_FROM_USER_ID                                   | IDX_FORM_ID |       4 | cns.form.id                              |    1 |      100 |                                 |
|  1 | PRIMARY            | authorizing_director_user   | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY     |       4 | cns.authorizing_director.from            |    1 |      100 |                                 |
|  1 | PRIMARY            | attachment_1                | eq_ref | PRIMARY,IDX_FORM_ID                                            | PRIMARY     |       4 | func                                     |    1 |      100 |                                 |
|  1 | PRIMARY            | attachment_2                | eq_ref | PRIMARY,IDX_FORM_ID                                            | PRIMARY     |       4 | func                                     |    1 |      100 |                                 |
|  1 | PRIMARY            | agent                       | ref    | IDX_FORM_ID,IDX_BRANCH_ID,IDX_TEAMLEADER_ID                    | IDX_FORM_ID |       4 | cns.form.id                              |    1 |      100 |                                 |
|  1 | PRIMARY            | agent_teamleader            | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.agent.teamleader_id                  |    1 |      100 |                                 |
|  1 | PRIMARY            | branch                      | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.agent.branch_id                      |    1 |      100 | Using index                     |
|  1 | PRIMARY            | reporting_to_1              | eq_ref | PRIMARY,IDX_SECTION                                            | PRIMARY     |       4 | cns.form.reporting_to_1                  |    1 |      100 |                                 |
|  1 | PRIMARY            | reporting_to_2              | eq_ref | PRIMARY,IDX_SECTION                                            | PRIMARY     |       4 | cns.form.reporting_to_2                  |    1 |      100 |                                 |
|  1 | PRIMARY            | reporting_to_2_section      | eq_ref | PRIMARY,IDX_DEPARTMENT                                         | PRIMARY     |       4 | cns.reporting_to_2.section_id            |    1 |      100 |                                 |
|  1 | PRIMARY            | reporting_to_2_department   | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.reporting_to_2_section.department_id |    1 |      100 |                                 |
|  1 | PRIMARY            | creator                     | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.form.user_id                         |    1 |      100 |                                 |
|  1 | PRIMARY            | reporting_to_1_section      | eq_ref | PRIMARY,IDX_DEPARTMENT                                         | PRIMARY     |       4 | cns.reporting_to_1.section_id            |    1 |      100 |                                 |
|  1 | PRIMARY            | reporting_to_1_department   | eq_ref | PRIMARY                                                        | PRIMARY     |       4 | cns.reporting_to_1_section.department_id |    1 |      100 |                                 |
|  1 | PRIMARY            | user_status_by              | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY     |       4 | cns.form.status_by_user_id               |    1 |      100 |                                 |
|  1 | PRIMARY            | user_status_by_role         | eq_ref | PRIMARY                                                        | PRIMARY     |       3 | cns.user_status_by.role                  |    1 |      100 |                                 |
|  3 | DEPENDENT SUBQUERY | attachments                 | ref    | IDX_FORM_ID                                                    | IDX_FORM_ID |       4 | cns.form.id                              |    1 |      100 | Using index                     |
|  2 | DEPENDENT SUBQUERY | attachments                 | ref    | IDX_FORM_ID                                                    | IDX_FORM_ID |       4 | cns.form.id                              |    1 |      100 | Using index                     |
+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+-------------+---------+------------------------------------------+------+----------+---------------------------------+

EXPLAIN EXTENDED - LAPTOP

+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+---------------+---------+------------------------------------------+------+----------+----------------------------------------------+
| id |    select_type     |            table            |  type  |                         possible_keys                          |      key      | key_len |                   ref                    | rows | filtered |                    Extra                     |
+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+---------------+---------+------------------------------------------+------+----------+----------------------------------------------+
|  1 | PRIMARY            | form_type                   | index  | PRIMARY                                                        | IDX_FORM_TYPE |     137 |                                          |    2 |      100 | Using index; Using temporary; Using filesort |
|  1 | PRIMARY            | form                        | ref    | IDX_USER_ID,IDX_REPORTING_TO_1,IDX_SECTION,IDX_TYPE,IDX_STATUS | IDX_TYPE      |       4 | cns.form_type.id                         | 1443 |      100 |                                              |
|  1 | PRIMARY            | status                      | eq_ref | PRIMARY                                                        | PRIMARY       |       3 | cns.form.status                          |    1 |      100 |                                              |
|  1 | PRIMARY            | section                     | eq_ref | PRIMARY,IDX_DEPARTMENT                                         | PRIMARY       |       4 | cns.form.section_id                      |    1 |      100 |                                              |
|  1 | PRIMARY            | department                  | eq_ref | PRIMARY                                                        | PRIMARY       |       4 | cns.section.department_id                |    1 |      100 |                                              |
|  1 | PRIMARY            | authorizing_teamleader      | ref    | IDX_FORM_ID,IDX_FROM_USER_ID                                   | IDX_FORM_ID   |       4 | cns.form.id                              |    1 |      100 |                                              |
|  1 | PRIMARY            | authorizing_teamleader_user | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY       |       4 | cns.authorizing_teamleader.from          |    1 |      100 |                                              |
|  1 | PRIMARY            | authorizing_manager         | ref    | IDX_FORM_ID,IDX_FROM_USER_ID                                   | IDX_FORM_ID   |       4 | cns.form.id                              |    1 |      100 |                                              |
|  1 | PRIMARY            | authorizing_manager_user    | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY       |       4 | cns.authorizing_manager.from             |    1 |      100 |                                              |
|  1 | PRIMARY            | authorizing_director        | ref    | IDX_FORM_ID,IDX_FROM_USER_ID                                   | IDX_FORM_ID   |       4 | cns.form.id                              |    1 |      100 |                                              |
|  1 | PRIMARY            | authorizing_director_user   | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY       |       4 | cns.authorizing_director.from            |    1 |      100 |                                              |
|  1 | PRIMARY            | attachment_1                | eq_ref | PRIMARY,IDX_FORM_ID                                            | PRIMARY       |       4 | func                                     |    1 |      100 |                                              |
|  1 | PRIMARY            | attachment_2                | eq_ref | PRIMARY,IDX_FORM_ID                                            | PRIMARY       |       4 | func                                     |    1 |      100 |                                              |
|  1 | PRIMARY            | agent                       | ref    | IDX_FORM_ID,IDX_BRANCH_ID,IDX_TEAMLEADER_ID                    | IDX_FORM_ID   |       4 | cns.form.id                              |    1 |      100 |                                              |
|  1 | PRIMARY            | agent_teamleader            | eq_ref | PRIMARY                                                        | PRIMARY       |       4 | cns.agent.teamleader_id                  |    1 |      100 |                                              |
|  1 | PRIMARY            | branch                      | eq_ref | PRIMARY                                                        | PRIMARY       |       4 | cns.agent.branch_id                      |    1 |      100 | Using index                                  |
|  1 | PRIMARY            | reporting_to_1              | eq_ref | PRIMARY,IDX_SECTION                                            | PRIMARY       |       4 | cns.form.reporting_to_1                  |    1 |      100 |                                              |
|  1 | PRIMARY            | reporting_to_2              | eq_ref | PRIMARY,IDX_SECTION                                            | PRIMARY       |       4 | cns.form.reporting_to_2                  |    1 |      100 |                                              |
|  1 | PRIMARY            | reporting_to_2_section      | eq_ref | PRIMARY,IDX_DEPARTMENT                                         | PRIMARY       |       4 | cns.reporting_to_2.section_id            |    1 |      100 |                                              |
|  1 | PRIMARY            | reporting_to_2_department   | eq_ref | PRIMARY                                                        | PRIMARY       |       4 | cns.reporting_to_2_section.department_id |    1 |      100 |                                              |
|  1 | PRIMARY            | creator                     | eq_ref | PRIMARY                                                        | PRIMARY       |       4 | cns.form.user_id                         |    1 |      100 |                                              |
|  1 | PRIMARY            | reporting_to_1_section      | eq_ref | PRIMARY,IDX_DEPARTMENT                                         | PRIMARY       |       4 | cns.reporting_to_1.section_id            |    1 |      100 |                                              |
|  1 | PRIMARY            | reporting_to_1_department   | eq_ref | PRIMARY                                                        | PRIMARY       |       4 | cns.reporting_to_1_section.department_id |    1 |      100 |                                              |
|  1 | PRIMARY            | user_status_by              | eq_ref | PRIMARY,IDX_ROLE                                               | PRIMARY       |       4 | cns.form.status_by_user_id               |    1 |      100 |                                              |
|  1 | PRIMARY            | user_status_by_role         | eq_ref | PRIMARY                                                        | PRIMARY       |       3 | cns.user_status_by.role                  |    1 |      100 |                                              |
|  3 | DEPENDENT SUBQUERY | attachments                 | ref    | IDX_FORM_ID                                                    | IDX_FORM_ID   |       4 | cns.form.id                              |    1 |      100 | Using index                                  |
|  2 | DEPENDENT SUBQUERY | attachments                 | ref    | IDX_FORM_ID                                                    | IDX_FORM_ID   |       4 | cns.form.id                              |    1 |      100 | Using index                                  |
+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+---------------+---------+------------------------------------------+------+----------+----------------------------------------------+

模型

CNS Model

笔记本电脑规格

操作系统:Microsoft Windows 7 Professional,处理器:Intel®Core™i7-4600M处理器(4M高速缓存,高达3.60 GHz),内存:8GB

服务器规格

操作系统:Microsoft Windows 2008 Standard SP2,处理器:Intel®Xeon®处理器X5570(8M缓存,2.93 GHz,6.40 GT /sIntel®QPI),内存:4GB

疑难解答

1。通过优化将两个数据库中所有表的引擎从InnoDB更改为MyISAM。在服务器上运行89.435秒,在笔记本电脑上运行57.252秒。与使用InnoDB引擎的1.388秒查询时间相比,笔记本电脑仍然更快,速度极慢。

5 个答案:

答案 0 :(得分:4)

笔记本电脑和服务器之间的数据(不是架构)有所不同吗?

说明显示section表选择服务器上的所有行,而不是笔记本电脑上的所有行。

此外,它在服务器中显示Using temporary; Using filesort:可能是问题的根源。

答案 1 :(得分:3)

在将数据库从一台机器转移到另一台机器之后,您的表中的索引可能无法重建(我以前经历过这种情况)。您必须手动告诉MySQL重建索引。如果我没记错的话,您可以使用OPTIMIZE查询

OPTIMIZE TABLE your_table

索引的不存在会严重降低您的查询速度,尽管您遇到的差异可能太大而无法解释此问题。 与之前的评论一样,您可以发布表格/查询吗?

答案 2 :(得分:1)

事情绝对不能在数据库中进行线性扩展。我曾经通过预先选择原始表的7%以及where-part中的附加子句来更改包含大量计算的查询。结果并没有增加约15倍的速度,而是超过3000倍!

(我怀疑DBMS突然能够将表完全存储在内存中)

反正;您可以尝试使用分析器查看在两个系统上执行的实际查询以及不同步骤所花费的时间。如果没有弄错,可以使用MySQL的分析器。

答案 3 :(得分:1)

你的查询的主要问题是你使用了太多无用的convert using utf-8(对于id和datetime ???),只需删除你的所有转换,我可以在我的笔记本电脑中运行你的查询少于1秒(之前移除,需要超过30秒,我没有耐心等待更多,只是停止它)

SELECT form.id                                                                                     AS 'Form ID',
   DATE_FORMAT(form.created_on, '%d %b %Y')                                                    AS 'Created On - Date',
   DATE_FORMAT(form.created_on, '%h:%i %p')                                                    AS 'Created On - Time',
   department.name                                                                             AS 'Department',
   section.name                                                                                AS 'Section',
   reporting_to_1.id                                                                           AS 'Reporting To 1 - System ID',
   reporting_to_1.real_name                                                                    AS 'Reporting To 1 - Name',
   reporting_to_1_department.name                                                              AS 'Reporting To 1 - Department',
   reporting_to_1_section.name                                                                 AS 'Reporting To 1 - Section',
   IFNULL(reporting_to_2.id, '')                                           AS 'Reporting To 2 - System ID',
   IFNULL(reporting_to_2.real_name, '')                                                        AS 'Reporting To 2 - Name',
   IFNULL(reporting_to_2_department.name, '')                                                  AS 'Reporting To 2 - Department',
   IFNULL(reporting_to_2_section.name, '')                                                     AS 'Reporting To 2 - Section',
   form_type.type                                                                              AS 'Form Type',
   IF(form.customer_number = 0, '-', form.customer_number)                 AS 'Customer Number', 
   form.customer_name                                                                          AS 'Customer Name',
   form.customer_contract                                                                      AS 'Customer Contract No.',
   DATE_FORMAT(form.action_date, '%d %b %Y')                                                   AS 'Action - On Date',
   CONCAT('http://cns', attachment_1.path, '/', attachment_1.filename_generated)               AS 'Attachment - 1',
   CONCAT('http://cns', attachment_2.path, '/', attachment_2.filename_generated)               AS 'Attachment - 2',
   agent.name                                                                                  AS 'Agent - Name',
   agent.tag                                                                                   AS 'Agent - Tag',
   agent.type                                                                                  AS 'Agent - Type',
   IFNULL(agent_teamleader.real_name, '')                                  AS 'Agent - Team Leader - Name',
   creator.id                                                                                  AS `creator id`, 
   creator.real_name                                                                           AS `creator full name`, 
   IFNULL(authorizing_teamleader_user.id, '')                               AS `processed by - team leader - system id`, 
   IFNULL(authorizing_teamleader_user.real_name, '')                                           AS `processed by - team leader - name`, 
   IFNULL(authorizing_teamleader_user.employee_id, '')                      AS `processed by - team leader - employee id`, 
   IFNULL(DATE_FORMAT(authorizing_teamleader.action_date, '%d %b %Y'), '')  AS `processed on - team leader - date`, 
   IFNULL(DATE_FORMAT(authorizing_teamleader.action_date, '%h:%i %p'), '')  AS `processed on - team leader - time`, 
   IFNULL(authorizing_manager_user.id, '')                                  AS `processed by - manager - system id`, 
   IFNULL(authorizing_manager_user.real_name, '')                                              AS `processed by - manager - name`, 
   IFNULL(authorizing_manager_user.employee_id, '')                        AS `processed by - manager - employee id`, 
   IFNULL(DATE_FORMAT(authorizing_manager.action_date, '%d %b %Y'), '')    AS `processed on - manager - date`, 
   IFNULL(DATE_FORMAT(authorizing_manager.action_date, '%h:%i %p'), '')    AS `processed on - manager - time`, 
   IFNULL(authorizing_director_user.id, '')                                AS `processed by - director - system id`, 
   IFNULL(authorizing_director_user.real_name, '')                                             AS `processed by - director - name`, 
   IFNULL(authorizing_director_user.employee_id, '')                       AS `processed by - director - employee id`, 
   IFNULL(DATE_FORMAT(authorizing_director.action_date, '%d %b %Y'), '')   AS `processed on - director - date`, 
   IFNULL(DATE_FORMAT(authorizing_director.action_date, '%h:%i %p'), '')   AS `processed on - director - time`, 
   status.name                                                                                 AS `status`,
   IF(status.name = 'Pending', '', user_status_by.id)                      AS `status by - system id`, 
   IFNULL(user_status_by.real_name, '')                                                        AS `status by - name`, 
   IFNULL(user_status_by.employee_id, '')                                  AS `status by - employee id`, 
   IFNULL(user_status_by_role.name, '')                                                        AS `status by - position`, 
   IFNULL(DATE_FORMAT(form.status_on, '%d %b %Y'), '')                     AS `status on - date`, 
   IFNULL(DATE_FORMAT(form.status_on, '%h:%i %p'), '')                     AS `status on - time`, 
   CONCAT('http://cns/pdf/', form.pdf)                                                         AS `pdf`
FROM   forms AS form
   JOIN (sections AS section, 
        departments AS department) 
     ON form.section_id = section.id 
         AND section.department_id = department.id 
   JOIN (users AS reporting_to_1, 
        sections AS reporting_to_1_section, 
        departments AS reporting_to_1_department)
     ON reporting_to_1.id = form.reporting_to_1 
         AND reporting_to_1.section_id = reporting_to_1_section.id 
         AND reporting_to_1_section.department_id = reporting_to_1_department.id 
   LEFT JOIN (users AS reporting_to_2, sections AS reporting_to_2_section, 
             departments AS reporting_to_2_department)
     ON reporting_to_2.id = form.reporting_to_2 
         AND reporting_to_2.section_id = reporting_to_2_section.id 
         AND reporting_to_2_section.department_id = reporting_to_2_department.id 
   JOIN form_type 
     ON form.type = form_type.id 
   LEFT JOIN attachments AS attachment_1 
     ON form.id = attachment_1.form 
         AND attachment_1.id = ( SELECT min(id) 
                                 FROM   attachments 
                                 WHERE  form = form.id) 
   LEFT JOIN attachments AS attachment_2 
     ON form.id = attachment_2.form 
         AND attachment_2.id = ( SELECT max(id) 
                                 FROM   attachments 
                                 WHERE  form = form.id) 
   LEFT JOIN (agents AS agent,
             users AS agent_teamleader,
             branches AS branch) 
     ON form.id = agent.form_id 
         AND agent_teamleader.id = agent.teamleader_id 
         AND branch.id = agent.branch_id 
   JOIN users AS creator 
      ON form.user_id = creator.id 
   LEFT JOIN (authorizers AS authorizing_teamleader,
             users AS authorizing_teamleader_user) 
      ON authorizing_teamleader.form_id = form.id 
         AND authorizing_teamleader_user.id = authorizing_teamleader.`from` 
         AND authorizing_teamleader_user.role = 't' 
   LEFT JOIN (authorizers AS authorizing_manager,
             users AS authorizing_manager_user) 
      ON authorizing_manager.form_id = form.id 
         AND authorizing_manager_user.id = authorizing_manager.`from` 
         AND authorizing_manager_user.role = 'm' 
   LEFT JOIN (authorizers AS authorizing_director,
             users AS authorizing_director_user) 
      ON authorizing_director.form_id = form.id 
         AND authorizing_director_user.id = authorizing_director.`from` 
         AND authorizing_director_user.role = 'd' 
   JOIN status 
      ON form.status = status.id 
   LEFT JOIN (users AS user_status_by,
             roles AS user_status_by_role) 
      ON user_status_by.id = form.status_by_user_id 
         AND user_status_by_role.id = user_status_by.role 
GROUP  BY form.id 
ORDER  BY form.id DESC 
LIMIT 0, 100

答案 4 :(得分:1)

我无法添加评论,所以我会把我的两分钱作为答案。 这仅适用于您不拥有服务器并与其他服务共享的情况。 笔记本电脑,单盘旋转与盘子上的所有记录漂亮和整洁。数据库是唯一使用资源的东西。

服务器,共享服务,SAN或RAID磁盘,文件不在单个盘片上,您正在争夺资源。如果您具有访问权限,请在运行查询时检查CPU利用率等资源。如果您与其他人共享此服务器,则您很可能只分配了大量处理器资源和ram来执行查询。虽然您的服务器规格令人印象深刻,但共享环境会向每一方分发一小部分资源。

在这种情况下,您的笔记本电脑是功能更强大的设备。请向您的系统管理员咨询更多资源。