8

我试图理解为什么选择查询在我的笔记本电脑上运行得非常快,而在服务器上却非常慢。查询需要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

解释扩展 - 服务器

+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+-------------+---------+------------------------------------------+------+----------+---------------------------------+
| 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                     |
+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+-------------+---------+------------------------------------------+------+----------+---------------------------------+

解释扩展 - 笔记本电脑

+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+---------------+---------+------------------------------------------+------+----------+----------------------------------------------+
| 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                                  |
+----+--------------------+-----------------------------+--------+----------------------------------------------------------------+---------------+---------+------------------------------------------+------+----------+----------------------------------------------+

模型

中枢神经系统模型

笔记本电脑规格

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

服务器规格

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

故障排除

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

4

5 回答 5

4

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

解释表明该section表选择了服务器上的所有行,而不是像笔记本电脑上那样只选择一个。

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

于 2015-01-20T09:07:49.890 回答
3

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

优化表your_table

不存在索引会显着减慢您的查询速度,尽管您遇到的差异可能太大而无法用这个问题来解释。就像之前的评论一样,你能发布你的表格/查询吗?

于 2015-01-14T08:53:55.920 回答
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
于 2015-01-26T04:19:20.607 回答
1

事物在数据库中绝对不是线性扩展的。我曾经通过预先选择原始表的 7% 和 where 部分中的附加子句来更改包含大量计算的查询。结果不是速度提升了15倍左右,而是3000多倍!

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

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

于 2015-01-20T09:35:02.240 回答
1

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

服务器、共享服务、SAN 或 RAID 磁盘、文件不在一个盘片上,您正在争夺资源。如果您有权访问,请在运行查询时检查 CPU 利用率等资源。如果您与其他人共享此服务器,那么您可能只被分配了这么多的处理器资源和内存来执行您的查询。虽然您的服务器规格令人印象深刻,但共享环境会为每一方分配少量资源。

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

于 2015-01-28T23:45:32.697 回答