以下查询需要70秒钟或更长时间:
SELECT
ShipmentHeader.RecNbr,
ShipmentHeader.Void,
ShipmentHeader.SONum,
ShipmentHeader.DateofReq,
ShipmentHeader.ShipToName,
ShipmentHeader.ShipToCity,
ShipmentHeader.ShipToState,
ShipmentHeader.ShipToZip,
ShipmentHeader.ShipToCountry
FROM
ShipmentHeader
INNER JOIN ShipmentLabels
ON ShipmentHeader.RecNbr = ShipmentLabels.HeaderRecNbr
order by ShipmentHeader.RecNbr DESC
这里是表结构:
CREATE TABLE `ShipmentHeader` (
`RecNbr` int(11) NOT NULL AUTO_INCREMENT,
`Void` varchar(1) NOT NULL DEFAULT 'N',
`SONum` varchar(7) NOT NULL,
`User` varchar(6) NOT NULL,
`DateofReq` datetime NOT NULL,
`ShipToName` varchar(255) DEFAULT NULL,
`ShipToAddress1` varchar(255) DEFAULT NULL,
`ShipToAddress2` varchar(255) DEFAULT NULL,
`ShipToAddress3` varchar(255) DEFAULT NULL,
`ShipToCity` varchar(255) DEFAULT NULL,
`ShipToState` varchar(255) DEFAULT NULL,
`ShipToZip` varchar(255) DEFAULT NULL,
`ShipToCountry` varchar(255) DEFAULT NULL,
`PackageHeaderRecNbr` int(11) DEFAULT NULL,
`NegotiatedShipmentCharge` decimal(10,2) DEFAULT NULL,
`PublishedShipmentCharge` decimal(10,2) DEFAULT NULL,
`CustomerShipmentCharge` decimal(10,2) DEFAULT NULL,
`VoidTimeStamp` datetime DEFAULT NULL,
`VoidUser` varchar(50) DEFAULT NULL,
PRIMARY KEY (`RecNbr`),
KEY `SONum` (`SONum`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=539140 DEFAULT CHARSET=utf8
和
CREATE TABLE `ShipmentLabels` (
`RecNbr` int(11) NOT NULL AUTO_INCREMENT,
`Whse` varchar(3) DEFAULT NULL,
`HeaderRecNbr` int(11) NOT NULL,
`PackageRecNbr` int(11) NOT NULL,
`Carrier` varchar(60) NOT NULL DEFAULT '',
`Service` varchar(60) DEFAULT NULL,
`Charges` decimal(10,2) NOT NULL,
`RatedCost` decimal(10,2) NOT NULL,
`PublishedRate` decimal(10,2) NOT NULL,
`CustomerCharge` decimal(10,2) NOT NULL,
`Weight` int(11) NOT NULL,
`LabelFormat` varchar(30) NOT NULL DEFAULT '',
`ShipmentID` varchar(60) NOT NULL,
`TrackingNumber` varchar(60) NOT NULL DEFAULT '',
`Label` mediumtext NOT NULL COMMENT 'Base64 Encoded',
`DateofLabel` datetime NOT NULL,
`LabelSource` varchar(50) DEFAULT NULL,
`VendorServiceRecNbr` int(11) DEFAULT NULL,
PRIMARY KEY (`RecNbr`),
KEY `HeaderRecNbr` (`HeaderRecNbr`) USING BTREE,
KEY `PackageRecNbr` (`PackageRecNbr`) USING BTREE,
CONSTRAINT `ShipmentLabels_ibfk_1` FOREIGN KEY (`HeaderRecNbr`) REFERENCES `ShipmentHeader` (`RecNbr`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=542542 DEFAULT CHARSET=utf8
这里是解释:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ShipmentHeader index PRIMARY PRIMARY 4 536185
1 SIMPLE ShipmentLabels ref HeaderRecNbr HeaderRecNbr 4 Shipping.ShipmentHeader.RecNbr 1 Using index
[ShipmentLabels表在每一行中都有很多数据,因为它在MediumText列“ Label”中存储了base64编码的ZPL标签。
是否有一种方法可以更快地获得相同的结果?我只需要列出ShipmentHeader记录,并在上面附加标签即可,如ShipmentLabel.HeaderRecNbr = ShipmentHeader.RecNbr。
谢谢!