【发布时间】:2015-06-24 02:05:28
【问题描述】:
我目前正在创建一个将连接多个表的视图。我可以使用左连接得到结果,但是查询加载速度很慢。我也尝试过使用 Inner Join,但没有显示任何结果。反正有没有让我的查询快速? 下面是代码:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`%`
SQL SECURITY DEFINER
VIEW `prc`.`vsrparts_latest` AS
SELECT
`prc`.`tbsrparts_new`.`SRPartsID` AS `SRPartsID`,
`prc`.`tbsrparts_new`.`RepairID` AS `RepairID`,
`prc`.`tbsrparts_new`.`SRNo` AS `SRNo`,
`prc`.`tbsrparts_new`.`DateReceived` AS `DateReceived`,
`prc`.`tbsrparts_new`.`ShipmentDate` AS `ShipmentDate`,
`prc`.`tbparts`.`PartsNo` AS `PartsNo`,
`prc`.`tbsrparts_new`.`PartID` AS `PartID`,
`prc`.`tbparts`.`PartsDesc` AS `PartsDesc`,
`prc`.`tbcompany`.`Company` AS `Company`,
`prc`.`tbcompany`.`Alias` AS `Alias`,
`prc`.`tbsrparts_new`.`RepairCenter` AS `RepairCenter`,
`prc`.`tbsrparts_new`.`UserID` AS `UserID`,
`prc`.`tbsrparts_new`.`NinetyDaysReturn` AS `NinetyDaysReturn`,
`prc`.`tbsrparts_new`.`PartSN` AS `PartSN`,
`prc`.`tbsrparts_new`.`RefurbishedSN` AS `RefurbishedSN`,
`prc`.`tbsrparts_new`.`CountFrequency` AS `CountFrequency`,
`prc`.`tbuser`.`EmployeeID` AS `EmployeeID`,
`vpartsinfo`.`PartsNo` AS `FinalPart`,
`prc`.`tbsrparts_new`.`FinalPart` AS `FinalPartID`,
`prc`.`tbsrparts_new`.`EcoImplemented` AS `EcoImplemented`,
`prc`.`tbsrparts_new`.`VisualInspectionStatus` AS `VisualInspectionStatus`,
`prc`.`tbvisual`.`VisualInspectionErrorCode` AS `VisualInspectionErrorCode`,
`prc`.`tbvisual`.`VisualInspectionActionTaken` AS `VisualInspectionActionTaken`,
`prc`.`tbvisual`.`VisualInspectionComponentLocation` AS `VisualInspectionComponentLocation`,
`prc`.`tbsrparts_new`.`VisualInspectionResult` AS `VisualInspectionResult`,
`prc`.`tbsrparts_new`.`DebugTestingStatus` AS `DebugTestingStatus`,
`prc`.`tb1stdebug`.`FirstDebugTestingErrorCode` AS `FirstDebugTestingErrorCode`,
`prc`.`tb1stdebug`.`FirstDebugActionTaken` AS `FirstDebugActionTaken`,
`prc`.`tb1stdebug`.`FirstDebugComponentLocation` AS `FirstDebugComponentLocation`,
`prc`.`tb2nddebug`.`SecondDebugTestingErrorCode` AS `SecondDebugTestingErrorCode`,
`prc`.`tb2nddebug`.`SecondDebugActionTaken` AS `SecondDebugActionTaken`,
`prc`.`tb2nddebug`.`SecondDebugComponentLocation` AS `SecondDebugComponentLocation`,
`prc`.`tb3rddebug`.`ThirdDebugTestingErrorCode` AS `ThirdDebugTestingErrorCode`,
`prc`.`tb3rddebug`.`ThirdDebugActionTaken` AS `ThirdDebugActionTaken`,
`prc`.`tb3rddebug`.`ThirdDebugComponentLocation` AS `ThirdDebugComponentLocation`,
`prc`.`tbsrparts_new`.`DebugTestingResult` AS `DebugTestingResult`,
`prc`.`tbsrparts_new`.`FctTestingStatus` AS `FctTestingStatus`,
`prc`.`tb1stfct`.`FirstFctTestingErrorCode` AS `FirstFctTestingErrorCode`,
`prc`.`tb1stfct`.`FirstFctActionTaken` AS `FirstFctActionTaken`,
`prc`.`tb1stfct`.`FirstFctComponentLocation` AS `FirstFctComponentLocation`,
`prc`.`tb2ndfct`.`SecondFctTestingErrorCode` AS `SecondFctTestingErrorCode`,
`prc`.`tb2ndfct`.`SecondFctActionTaken` AS `SecondFctActionTaken`,
`prc`.`tb2ndfct`.`SecondFctComponentLocation` AS `SecondFctComponentLocation`,
`prc`.`tb3rdfct`.`ThirdFctTestingErrorCode` AS `ThirdFctTestingErrorCode`,
`prc`.`tb3rdfct`.`ThirdFctActionTaken` AS `ThirdFctActionTaken`,
`prc`.`tb3rdfct`.`ThirdFctComponentLocation` AS `ThirdFctComponentLocation`,
`prc`.`tbsrparts_new`.`FctTestingResult` AS `FctTestingResult`,
`prc`.`tbsrparts_new`.`RelayFailure` AS `RelayFailure`,
`prc`.`tbsrparts_new`.`RelayDateCode` AS `RelayDateCode`,
`prc`.`tbsrparts_new`.`DefectiveRelayColor` AS `DefectiveRelayColor`,
`prc`.`tbsrparts_new`.`RelayFailureLocation` AS `RelayFailureLocation`,
`prc`.`tbsrparts_new`.`DateCreated` AS `DateCreated`,
`prc`.`tbsrparts_new`.`LastUpdated` AS `LastUpdated`,
`prc`.`tbsrparts_new`.`EstimatedRepairCompletionDate` AS `EstimatedRepairCompletionDate`,
`prc`.`tbsrparts_new`.`StartRepairDate` AS `StartRepairDate`,
`prc`.`tbsrparts_new`.`Status` AS `Status`,
`prc`.`tbsrparts_new`.`AttachmentName` AS `AttachmentName`,
`prc`.`tbsrparts_new`.`PartsReturnProcess` AS `PartsReturnProcess`,
(TO_DAYS(CURDATE()) - TO_DAYS(STR_TO_DATE(REPLACE(`prc`.`tbsrparts_new`.`DateReceived`,
',',
'-'),
'%d-%M-%Y'))) AS `dateNew`
FROM
(((((((((((`prc`.`tbsrparts_new`
JOIN `prc`.`tbparts` ON ((`prc`.`tbsrparts_new`.`PartID` = `prc`.`tbparts`.`PartsID`)))
JOIN `prc`.`tbcompany` ON ((`prc`.`tbsrparts_new`.`RepairCenter` = `prc`.`tbcompany`.`CompanyID`)))
JOIN `prc`.`vpartsinfo` ON ((`vpartsinfo`.`PartsID` = `prc`.`tbsrparts_new`.`FinalPart`)))
JOIN `prc`.`tbuser` ON ((`prc`.`tbsrparts_new`.`UserID` = `prc`.`tbuser`.`UserID`)))
LEFT JOIN `prc`.`tbvisual` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tbvisual`.`RepairID`)))
LEFT JOIN `prc`.`tb1stdebug` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tb1stdebug`.`RepairID`)))
LEFT JOIN `prc`.`tb2nddebug` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tb2nddebug`.`RepairID`)))
LEFT JOIN `prc`.`tb3rddebug` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tb3rddebug`.`RepairID`)))
LEFT JOIN `prc`.`tb1stfct` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tb1stfct`.`RepairID`)))
LEFT JOIN `prc`.`tb2ndfct` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tb2ndfct`.`RepairID`)))
LEFT JOIN `prc`.`tb3rdfct` ON ((`prc`.`tbsrparts_new`.`RepairID` = `prc`.`tb3rdfct`.`RepairID`)))
ORDER BY `prc`.`tbsrparts_new`.`SRPartsID` DESC
以下是表的架构:
tbsrparts_new
+-------------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------------+--------------------+------+-----+---------+----------------+
| SRPartsID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(200) | NO | | NULL | |
| SRNo | varchar(200) | YES | MUL | NULL | |
| DateReceived | varchar(200) | YES | | NULL | |
| ShipmentDate | varchar(200) | YES | | NULL | |
| NinetyDaysReturn | varchar(200) | YES | | NULL | |
| PartID | varchar(200) | YES | | NULL | |
| PartSN | varchar(200) | YES | | NULL | |
| RefurbishedSN | varchar(200) | YES | | NULL | |
| FinalPart | varchar(200) | YES | | NULL | |
| DefectPart | varchar(200) | YES | | NULL | |
| RelayFailure | varchar(200) | YES | | NULL | |
| RelayDateCode | varchar(200) | YES | | NULL | |
| DefectiveRelayColor | varchar(200) | YES | | NULL | |
| RelayFailureLocation | varchar(200) | YES | | NULL | |
| RepairCenter | varchar(200) | YES | | NULL | |
| UserID | varchar(200) | YES | | NULL | |
| DateCreated | varchar(45) | YES | | NULL | |
| LastUpdated | varchar(45) | YES | | NULL | |
| LastUpdatedBy | varchar(45) | YES | | NULL | |
| EstimatedRepairCompletionDate | varchar(45) | YES | | NULL | |
| StartRepairDate | varchar(45) | YES | | NULL | |
| Attachment | longblob | YES | | NULL | |
| AttachmentName | varchar(45) | YES | | NULL | |
| AttachmentType | varchar(45) | YES | | NULL | |
| AttachmentSize | varchar(45) | YES | | NULL | |
| PartsReturnProcess | varchar(45) | YES | | NULL | |
| EcoImplemented | varchar(45) | YES | | NULL | |
| CountFrequency | varchar(45) | YES | | NULL | |
| VisualInspectionStatus | varchar(200) | YES | | NULL | |
| VisualInspectionResult | varchar(200) | YES | | NULL | |
| DebugTestingStatus | varchar(200) | YES | | NULL | |
| DebugTestingResult | varchar(200) | YES | | NULL | |
| ICTTestingStatus | varchar(200) | YES | | NULL | |
| ICTTestingResult | varchar(200) | YES | | NULL | |
| ICTTestingErrorCode | varchar(200) | YES | | NULL | |
| ICTTestingActionTaken | varchar(200) | YES | | NULL | |
| ICTTestingComponentLocation | varchar(200) | YES | | NULL | |
| ICTTestingDesignator | varchar(200) | YES | | NULL | |
| FctTestingStatus | varchar(200) | YES | | NULL | |
| FctTestingResult | varchar(200) | YES | | NULL | |
| Status | varchar(40) | YES | | NULL | |
+-------------------------------+--------------------+------+-----+---------+----------------+
tbuser
+---------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------------+------+-----+---------+----------------+
| UserID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| Username | varchar(500) | YES | | NULL | |
| Password | varchar(500) | YES | | NULL | |
| Name | varchar(500) | YES | | NULL | |
| EmployeeID | varchar(500) | YES | MUL | NULL | |
| Email | varchar(500) | YES | | NULL | |
| StatusID | "int(10) unsigned" | YES | | NULL | |
| AuthorityID | "int(10) unsigned" | YES | | NULL | |
| CompanyID | "int(10) unsigned" | YES | | NULL | |
| LastUpdated | varchar(50) | YES | | NULL | |
| LastUpdatedBy | varchar(45) | YES | | NULL | |
| LastLogin | varchar(45) | YES | | N/A | |
+---------------+--------------------+------+-----+---------+----------------+
tbparts
+-----------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------------+------+-----+---------+----------------+
| PartsID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| PartsNo | varchar(20) | NO | MUL | NULL | |
| PartsDesc | varchar(100) | YES | | NULL | |
| CompanyID | "int(10) unsigned" | NO | | NULL | |
| UserID | "int(10) unsigned" | YES | | NULL | |
| LastUpdatedTime | varchar(45) | YES | | NULL | |
| Category | varchar(45) | YES | | NULL | |
+-----------------+--------------------+------+-----+---------+----------------+
tbcompany
+--------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------------+------+-----+---------+----------------+
| CompanyID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| Company | varchar(45) | NO | MUL | NULL | |
| Alias | varchar(45) | YES | | NULL | |
| SupplierCode | varchar(45) | NO | | NULL | |
+--------------+--------------------+------+-----+---------+----------------+
vpartsinfo
+-----------------+--------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------------+------+-----+---------+-------+
| PartsID | "int(10) unsigned" | NO | | 0 | |
| PartsNo | varchar(20) | NO | | NULL | |
| PartsDesc | varchar(100) | YES | | NULL | |
| CompanyID | "int(10) unsigned" | NO | | NULL | |
| UserID | "int(10) unsigned" | YES | | NULL | |
| LastUpdatedTime | varchar(45) | YES | | NULL | |
| Company | varchar(45) | NO | | NULL | |
| Name | varchar(500) | YES | | NULL | |
+-----------------+--------------------+------+-----+---------+-------+
tb1stdebug
+-----------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------------+------+-----+---------+----------------+
| FirstDebugID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(500) | YES | | NULL | |
| FirstDebugTestingErrorCode | varchar(500) | YES | MUL | NULL | |
| FirstDebugActionTaken | varchar(500) | YES | | NULL | |
| FirstDebugComponentLocation | varchar(500) | YES | | NULL | |
+-----------------------------+--------------------+------+-----+---------+----------------+
tb2nddebug
+-----------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------------+------+-----+---------+----------------+
| SecondDebugID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(500) | YES | | NULL | |
| SecondDebugTestingErrorCode | varchar(500) | YES | MUL | NULL | |
| SecondDebugActionTaken | varchar(500) | YES | | NULL | |
| SecondDebugComponentLocation | varchar(500) | YES | | NULL | |
+-----------------------------+--------------------+------+-----+---------+----------------+
tb3rddebug
+-----------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------------+------+-----+---------+----------------+
| ThirdDebugID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(500) | YES | | NULL | |
| ThirdDebugTestingErrorCode | varchar(500) | YES | MUL | NULL | |
| ThirdDebugActionTaken | varchar(500) | YES | | NULL | |
| ThirdDebugComponentLocation | varchar(500) | YES | | NULL | |
+-----------------------------+--------------------+------+-----+---------+----------------+
tb1stfct
+---------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------+--------------------+------+-----+---------+----------------+
| FirstFctID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(45) | YES | | NULL | |
| FirstFctTestingErrorCode | varchar(500) | YES | MUL | NULL | |
| FirstFctActionTaken | varchar(500) | YES | | NULL | |
| FirstFctComponentLocation | varchar(500) | YES | | NULL | |
+---------------------------+--------------------+------+-----+---------+----------------+
tb2ndfct
+----------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+--------------------+------+-----+---------+----------------+
| SecondFctID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(45) | YES | | NULL | |
| SecondFctTestingErrorCode | varchar(500) | YES | MUL | NULL | |
| SecondFctActionTaken | varchar(500) | YES | | NULL | |
| SecondFctComponentLocation | varchar(500) | YES | | NULL | |
+----------------------------+--------------------+------+-----+---------+----------------+
tb3rdfct
+---------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------+--------------------+------+-----+---------+----------------+
| ThirdFctID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(45) | YES | | NULL | |
| ThirdFctTestingErrorCode | varchar(500) | YES | MUL | NULL | |
| ThirdFctActionTaken | varchar(500) | YES | | NULL | |
| ThirdFctComponentLocation | varchar(500) | YES | | NULL | |
+---------------------------+--------------------+------+-----+---------+----------------+
tbvisual
+-----------------------------------+--------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------------+--------------------+------+-----+---------+----------------+
| VisualID | "int(10) unsigned" | NO | PRI | NULL | auto_increment |
| RepairID | varchar(45) | YES | | NULL | |
| VisualInspectionErrorCode | varchar(500) | YES | MUL | NULL | |
| VisualInspectionActionTaken | varchar(500) | YES | | NULL | |
| VisualInspectionComponentLocation | varchar(500) | YES | | NULL | |
+-----------------------------------+--------------------+------+-----+---------+----------------+
【问题讨论】:
-
@DrewPierce,我已经为所有列创建了索引。还是很慢。
-
嗨@DrewPierce,有什么办法让它快点?你能给我建议吗?
-
@DrewPierce,我已经粘贴了与查询相关的表模式。希望你能帮助我。
-
太好了,我们来看看
-
嗨@DrewPierce,你能给我建议任何解决方案吗?