Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
膨胀的联合所有代码(MYSQL)_Mysql_Sql_Performance_Union All - Fatal编程技术网

膨胀的联合所有代码(MYSQL)

膨胀的联合所有代码(MYSQL),mysql,sql,performance,union-all,Mysql,Sql,Performance,Union All,我自学了SQL,我有一些乱七八糟的代码,速度非常慢。我在Tableau中可视化这些数据,我创建的视图变得如此缓慢,以至于我不得不创建一个包含我需要的所有信息的表(每天刷新) 我相信这种缓慢是由于我在这里发表了大量的联合声明。我这样做是为了“透视”数据,这样每个问题就不是数据库中自己的列,而是每行的一个属性 有谁能提供一些建议,告诉我如何重组代码以加快速度? 任何帮助或批评都将不胜感激,谢谢!(下面只是我的代码的一小部分,UNION ALL块的数量还在继续…) CREATE ALGORITHM=U

我自学了SQL,我有一些乱七八糟的代码,速度非常慢。我在Tableau中可视化这些数据,我创建的视图变得如此缓慢,以至于我不得不创建一个包含我需要的所有信息的表(每天刷新)

我相信这种缓慢是由于我在这里发表了大量的联合声明。我这样做是为了“透视”数据,这样每个问题就不是数据库中自己的列,而是每行的一个属性

有谁能提供一些建议,告诉我如何重组代码以加快速度? 任何帮助或批评都将不胜感激,谢谢!(下面只是我的代码的一小部分,UNION ALL块的数量还在继续…)

CREATE ALGORITHM=UNDEFINED 
DEFINER=root@localhost 
SQL SECURITY DEFINER 
VIEW view_data435386_xxxxx_MASTER AS


SELECT _data435386_xxxxx_1_job_profile.ID AS ID,
_data435386_xxxxx_1_job_profile.ID AS Comment_Photos_ID,
'Job Profile' AS Impact_Area,
_data435386_xxxxx_1_job_profile.PARENT_RECORD_ID AS PARENT_RECORD_ID,
_data435386_xxxxx_1_job_profile.pjq1 AS PJQ1,
_data435386_xxxxx_1_job_profile.pjq_2 AS PJQ2,
_data435386_xxxxx_1_job_profile.pjq_3 AS PJQ3,
_data435386_xxxxx_1_job_profile.pjq_4 AS PJQ4,
_data435386_xxxxx_1_job_profile.pjq_5 AS PJQ5,
_data435386_xxxxx_1_job_profile.pjq_6 AS PJQ6,
_data435386_xxxxx_1_job_profile.pjq_7 AS PJQ7,
_data435386_xxxxx_1_job_profile.pjq_8 AS PJQ8,
_data435386_xxxxx_1_job_profile.pjq_9 AS PJQ9,
_data435386_xxxxx_1_job_profile.pjq_10 AS PJQ10,
_data435386_xxxxx_main_form.additional_comments AS Additional_Comments,
_data435386_xxxxx_main_form.wr_,
NULL AS Completion_Due_Date,
NULL AS Completion_Due_Date_1443,
NULL AS Training_Needed,
NULL AS Follow_Up_Description,
REPLACE(_data435386_xxxxx_main_form.inspector, '_', ' ') AS Inspector,
REPLACE(_data435386_xxxxx_main_form.crew_leader, '_', ' ') AS Crew_Leader,
_data435386_xxxxx_main_form.date1 AS date1,
REPLACE(_data435386_xxxxx_1_job_profile.district, '_', ' ') AS District,
REPLACE(_data435386_xxxxx_1_job_profile.division, '_', ' ') AS Division,
REPLACE(_data435386_xxxxx_1_job_profile.contractor_inspected, '_', ' ') AS Contractor_Inspected,
301 Sample_Size_Req,
        (CASE
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                38197
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                3734
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                5044
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                55214
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                37742
            ELSE NULL   
        END) AS Population_size,
'1_Job Profile' AS Results,
3438545 AS Parent_Page_ID,
'1.0 Job Profile' AS Task,
'1.0 Job Profile' AS Construction_Activity,
NULL AS Overall_Rating,
CONCAT('https://xxxxx.xxxxx.com/exzact/dataPDF.php?TABLE_NAME=_data435386_xxxxx_main_form&ID=',
                `_data435386_xxxxx_main_form`.`ID`,
                '&PAGE_ID=3438731&USERNAME=xxxxx1&PASSWORD=xxxxx') AS `report_url`
FROM
(_data435386_xxxxx_main_form 
LEFT JOIN _data435386_xxxxx_1_job_profile ON((_data435386_xxxxx_main_form.ID = _data435386_xxxxx_1_job_profile.PARENT_RECORD_ID)))
UNION ALL 


SELECT _data435386_xxxxx_1_job_profile.ID AS ID,
_data435386_xxxxx_1_job_profile.ID AS Comment_Photos_ID,
'Safety' AS Impact_Area,
_data435386_xxxxx_1_job_profile.PARENT_RECORD_ID AS PARENT_RECORD_ID,
_data435386_xxxxx_1_job_profile.pjq1 AS PJQ1,
_data435386_xxxxx_1_job_profile.pjq_2 AS PJQ2,
_data435386_xxxxx_1_job_profile.pjq_3 AS PJQ3,
_data435386_xxxxx_1_job_profile.pjq_4 AS PJQ4,
_data435386_xxxxx_1_job_profile.pjq_5 AS PJQ5,
_data435386_xxxxx_1_job_profile.pjq_6 AS PJQ6,
_data435386_xxxxx_1_job_profile.pjq_7 AS PJQ7,
_data435386_xxxxx_1_job_profile.pjq_8 AS PJQ8,
_data435386_xxxxx_1_job_profile.pjq_9 AS PJQ9,
_data435386_xxxxx_1_job_profile.pjq_10 AS PJQ10,
_data435386_xxxxx_main_form.additional_comments AS Additional_Comments,
_data435386_xxxxx_main_form.wr_,
NULL AS Completion_Due_Date,
NULL AS Completion_Due_Date_1443,
NULL AS Training_Needed,
NULL AS Follow_Up_Description,
REPLACE(_data435386_xxxxx_main_form.inspector, '_', ' ') AS Inspector,
REPLACE(_data435386_xxxxx_main_form.crew_leader, '_', ' ') AS Crew_Leader,
_data435386_xxxxx_main_form.date1 AS date1,
REPLACE(_data435386_xxxxx_1_job_profile.district, '_', ' ') AS District,
REPLACE(_data435386_xxxxx_1_job_profile.division, '_', ' ') AS Division,
REPLACE(_data435386_xxxxx_1_job_profile.contractor_inspected, '_', ' ') AS Contractor_Inspected,
301 Sample_Size_Req,
        (CASE
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                38197
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                3734
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                5044
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                55214
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                37742
            ELSE NULL   
        END) AS Population_size,
21_Uses_proper_ppe AS Results,
3438623 AS Parent_Page_ID,
'2.1 Uses Proper PPE' AS Task,
'2.0 Safety' AS Construction_Activity,
NULL AS Overall_Rating,
CONCAT('https://xxxxx.xxxxx.com/exzact/dataPDF.php?TABLE_NAME=_data435386_xxxxx_main_form&ID=',
                `_data435386_xxxxx_main_form`.`ID`,
                '&PAGE_ID=3438731&USERNAME=xxxxx1&PASSWORD=xxxxx') AS `report_url`
FROM
((_data435386_xxxxx_main_form 
LEFT JOIN view_data435386_xxxxx_2_task_successful ON((_data435386_xxxxx_main_form.ID = view_data435386_xxxxx_2_task_successful.PARENT_RECORD_ID))) 
LEFT JOIN _data435386_xxxxx_1_job_profile ON((_data435386_xxxxx_main_form.ID = _data435386_xxxxx_1_job_profile.PARENT_RECORD_ID)))
WHERE 21_Uses_proper_ppe IS NOT NULL
UNION ALL 





SELECT _data435386_xxxxx_1_job_profile.ID AS ID,
view_data435386_xxxxx_2_task_successful.ID AS Comment_Photos_ID,
'Safety' AS Impact_Area,
_data435386_xxxxx_1_job_profile.PARENT_RECORD_ID AS PARENT_RECORD_ID,
_data435386_xxxxx_1_job_profile.pjq1 AS PJQ1,
_data435386_xxxxx_1_job_profile.pjq_2 AS PJQ2,
_data435386_xxxxx_1_job_profile.pjq_3 AS PJQ3,
_data435386_xxxxx_1_job_profile.pjq_4 AS PJQ4,
_data435386_xxxxx_1_job_profile.pjq_5 AS PJQ5,
_data435386_xxxxx_1_job_profile.pjq_6 AS PJQ6,
_data435386_xxxxx_1_job_profile.pjq_7 AS PJQ7,
_data435386_xxxxx_1_job_profile.pjq_8 AS PJQ8,
_data435386_xxxxx_1_job_profile.pjq_9 AS PJQ9,
_data435386_xxxxx_1_job_profile.pjq_10 AS PJQ10,
_data435386_xxxxx_main_form.additional_comments AS Additional_Comments,
_data435386_xxxxx_main_form.wr_,
NULL AS Completion_Due_Date,
NULL AS Completion_Due_Date_1443,
NULL AS Training_Needed,
NULL AS Follow_Up_Description,
REPLACE(_data435386_xxxxx_main_form.inspector, '_', ' ') AS Inspector,
REPLACE(_data435386_xxxxx_main_form.crew_leader, '_', ' ') AS Crew_Leader,
_data435386_xxxxx_main_form.date1 AS date1,
REPLACE(_data435386_xxxxx_1_job_profile.district, '_', ' ') AS District,
REPLACE(_data435386_xxxxx_1_job_profile.division, '_', ' ') AS Division,
REPLACE(_data435386_xxxxx_1_job_profile.contractor_inspected, '_', ' ') AS Contractor_Inspected,
301 Sample_Size_Req,
        (CASE
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                38197
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                3734
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                5044
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                55214
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                37742
            ELSE NULL   
        END) AS Population_size,
22_Damage_Prevention AS Results,
3438623 AS Parent_Page_ID,
'2.2 Damage Prevention' AS Task,
'2.0 Safety' AS Construction_Activity,
NULL AS Overall_Rating,
CONCAT('https://xxxxx.xxxxx.com/exzact/dataPDF.php?TABLE_NAME=_data435386_xxxxx_main_form&ID=',
                `_data435386_xxxxx_main_form`.`ID`,
                '&PAGE_ID=3438731&USERNAME=xxxxx1&PASSWORD=xxxxx') AS `report_url`
FROM
((_data435386_xxxxx_main_form 
LEFT JOIN view_data435386_xxxxx_2_task_successful ON((_data435386_xxxxx_main_form.ID = view_data435386_xxxxx_2_task_successful.PARENT_RECORD_ID))) 
LEFT JOIN _data435386_xxxxx_1_job_profile ON((_data435386_xxxxx_main_form.ID = _data435386_xxxxx_1_job_profile.PARENT_RECORD_ID)))
WHERE 22_Damage_Prevention IS NOT NULL
UNION ALL 





SELECT _data435386_xxxxx_1_job_profile.ID AS ID,
view_data435386_xxxxx_2_task_successful.ID AS Comment_Photos_ID,
'Safety' AS Impact_Area,
_data435386_xxxxx_1_job_profile.PARENT_RECORD_ID AS PARENT_RECORD_ID,
_data435386_xxxxx_1_job_profile.pjq1 AS PJQ1,
_data435386_xxxxx_1_job_profile.pjq_2 AS PJQ2,
_data435386_xxxxx_1_job_profile.pjq_3 AS PJQ3,
_data435386_xxxxx_1_job_profile.pjq_4 AS PJQ4,
_data435386_xxxxx_1_job_profile.pjq_5 AS PJQ5,
_data435386_xxxxx_1_job_profile.pjq_6 AS PJQ6,
_data435386_xxxxx_1_job_profile.pjq_7 AS PJQ7,
_data435386_xxxxx_1_job_profile.pjq_8 AS PJQ8,
_data435386_xxxxx_1_job_profile.pjq_9 AS PJQ9,
_data435386_xxxxx_1_job_profile.pjq_10 AS PJQ10,
_data435386_xxxxx_main_form.additional_comments AS Additional_Comments,
_data435386_xxxxx_main_form.wr_,
NULL AS Completion_Due_Date,
NULL AS Completion_Due_Date_1443,
NULL AS Training_Needed,
NULL AS Follow_Up_Description,
REPLACE(_data435386_xxxxx_main_form.inspector, '_', ' ') AS Inspector,
REPLACE(_data435386_xxxxx_main_form.crew_leader, '_', ' ') AS Crew_Leader,
_data435386_xxxxx_main_form.date1 AS date1,
REPLACE(_data435386_xxxxx_1_job_profile.district, '_', ' ') AS District,
REPLACE(_data435386_xxxxx_1_job_profile.division, '_', ' ') AS Division,
REPLACE(_data435386_xxxxx_1_job_profile.contractor_inspected, '_', ' ') AS Contractor_Inspected,
301 Sample_Size_Req,
        (CASE
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                38197
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                3734
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                5044
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                55214
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                37742
            ELSE NULL   
        END) AS Population_size,
23_fire_bottle_and_no_smoking_sign AS Results,
3438623 AS Parent_Page_ID,
'2.3 Fire Bottle and No Smoking Sign' AS Task,
'2.0 Safety' AS Construction_Activity,
NULL AS Overall_Rating,
CONCAT('https://xxxxx.xxxxx.com/exzact/dataPDF.php?TABLE_NAME=_data435386_xxxxx_main_form&ID=',
                `_data435386_xxxxx_main_form`.`ID`,
                '&PAGE_ID=3438731&USERNAME=xxxxx1&PASSWORD=xxxxx') AS `report_url`
FROM
((_data435386_xxxxx_main_form 
LEFT JOIN view_data435386_xxxxx_2_task_successful ON((_data435386_xxxxx_main_form.ID = view_data435386_xxxxx_2_task_successful.PARENT_RECORD_ID))) 
LEFT JOIN _data435386_xxxxx_1_job_profile ON((_data435386_xxxxx_main_form.ID = _data435386_xxxxx_1_job_profile.PARENT_RECORD_ID)))
WHERE 23_fire_bottle_and_no_smoking_sign IS NOT NULL
UNION ALL 





SELECT _data435386_xxxxx_1_job_profile.ID AS ID,
view_data435386_xxxxx_2_task_successful.ID AS Comment_Photos_ID,
'Safety' AS Impact_Area,
_data435386_xxxxx_1_job_profile.PARENT_RECORD_ID AS PARENT_RECORD_ID,
_data435386_xxxxx_1_job_profile.pjq1 AS PJQ1,
_data435386_xxxxx_1_job_profile.pjq_2 AS PJQ2,
_data435386_xxxxx_1_job_profile.pjq_3 AS PJQ3,
_data435386_xxxxx_1_job_profile.pjq_4 AS PJQ4,
_data435386_xxxxx_1_job_profile.pjq_5 AS PJQ5,
_data435386_xxxxx_1_job_profile.pjq_6 AS PJQ6,
_data435386_xxxxx_1_job_profile.pjq_7 AS PJQ7,
_data435386_xxxxx_1_job_profile.pjq_8 AS PJQ8,
_data435386_xxxxx_1_job_profile.pjq_9 AS PJQ9,
_data435386_xxxxx_1_job_profile.pjq_10 AS PJQ10,
_data435386_xxxxx_main_form.additional_comments AS Additional_Comments,
_data435386_xxxxx_main_form.wr_,
NULL AS Completion_Due_Date,
NULL AS Completion_Due_Date_1443,
NULL AS Training_Needed,
NULL AS Follow_Up_Description,
REPLACE(_data435386_xxxxx_main_form.inspector, '_', ' ') AS Inspector,
REPLACE(_data435386_xxxxx_main_form.crew_leader, '_', ' ') AS Crew_Leader,
_data435386_xxxxx_main_form.date1 AS date1,
REPLACE(_data435386_xxxxx_1_job_profile.district, '_', ' ') AS District,
REPLACE(_data435386_xxxxx_1_job_profile.division, '_', ' ') AS Division,
REPLACE(_data435386_xxxxx_1_job_profile.contractor_inspected, '_', ' ') AS Contractor_Inspected,
NULL Sample_Size_Req,
        (CASE
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                38197
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                3734
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                5044
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                55214
            WHEN
                (_data435386_xxxxx_1_job_profile.division = 'xxxxx')
            THEN
                37742
            ELSE NULL   
        END) AS Population_size,
24_traffic_control_plan AS Results,
3438623 AS Parent_Page_ID,
'2.4 Traffic Control Plan' AS Task,
'2.0 Safety' AS Construction_Activity,
NULL AS Overall_Rating,
CONCAT('https://xxxxx.xxxxx.com/exzact/dataPDF.php?TABLE_NAME=_data435386_xxxxx_main_form&ID=',
                `_data435386_xxxxx_main_form`.`ID`,
                '&PAGE_ID=3438731&USERNAME=xxxxx1&PASSWORD=xxxxx') AS `report_url`
FROM
((_data435386_xxxxx_main_form 
LEFT JOIN view_data435386_xxxxx_2_task_successful ON((_data435386_xxxxx_main_form.ID = view_data435386_xxxxx_2_task_successful.PARENT_RECORD_ID))) 
LEFT JOIN _data435386_xxxxx_1_job_profile ON((_data435386_xxxxx_main_form.ID = _data435386_xxxxx_1_job_profile.PARENT_RECORD_ID)))
WHERE 24_traffic_control_plan IS NOT NULL
UNION ALL 

看起来联合的几个查询几乎完全相同,只用于生成具有不同
结果
任务
字段的多个结果行;您可能希望合并这些查询,或插入一个统一的查询(将
结果
字段的所有值作为单独的字段)将查询的版本转换为中间(伪临时)表,然后对该表联合更简单的查询

所谓“中间(伪临时)”是指您不打算保留的非临时表;我建议使用临时表,但MySQL不允许在同一查询中多次引用(例如联合或自联接)



编辑:也不清楚
结果
值来自哪个表;如果它们不是来自
\u data435386\uxxxxx\u main\u表单
,那么您有一些左连接可以是内部连接。

联合
通常不是特别高性能的,因为它们只是将一个结果集附加到另一个结果集;您最好查看联合查询的性能。请突出显示所选查询之间的差异。