gpt4 book ai didi

左连接的Mysql查询性能问题

转载 作者:行者123 更新时间:2023-11-29 18:28:55 26 4
gpt4 key购买 nike

我的数据库中有 3 个表。第一个表有 150k 条记录,第二个表有 175k 条记录,第三个表有 210 万条记录。我需要使用上面 3 个表的输出。因此,我使用内连接连接了上面的 3 个表,并得到了包含 1.5k 条记录的输出,但执行需要 8 个小时的时间。

我在连接表时使用了主键。如何提高性能?

我尝试添加索引,下面是脚本和代码

下表有 150k 条记录

 CREATE TABLE `us_input_opp_oppheader` (
`accountId` varchar(100) NOT NULL,
`accountName` varchar(200) DEFAULT NULL,
`objectId` varchar(100) NOT NULL,
`processType` varchar(100) DEFAULT NULL,
`description` varchar(250) DEFAULT NULL,
`noOfLines` int(11) DEFAULT NULL,
PRIMARY KEY (`accountId`,`objectId`),
KEY `objectId`
(`objectId`,`description`,`accountId`,`accountName`,`noOfLines`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

下表有 175k 条记录

CREATE TABLE `us_input_opp_oppitem` (
`objectId` bigint(20) NOT NULL,
`createdBy` varchar(100) DEFAULT NULL,
`changedBy` varchar(100) DEFAULT NULL,
`numberInt` varchar(100) NOT NULL,
PRIMARY KEY (`objectId`,`numberInt`),
KEY `objectId` (`objectId`,`createdBy`,`changedBy`,`numberInt`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

下表有 210 万条记录

CREATE TABLE `us_input_opp_oppsalesteam` (
`transactionNumber` varchar(100) NOT NULL,
`item` varchar(100) NOT NULL,
`partnerFunction` varchar(100) DEFAULT NULL,
`partnerFunctionText` varchar(200) DEFAULT NULL,
PRIMARY KEY (`transactionNumber`,`item`),
KEY `item` (`item`,`partnerFunction`,`partnerFunctionText`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


SELECT oh.objectId, oh.description, oi.`createdBy`, oi.`changedBy`, oh.description, oh.processType,
os.`item`, os.`partnerFunction`, os.`partnerFunctionText`
FROM us_input_opp_oppheader oh
LEFT join us_input_opp_oppitem oi ON oi.objectId = oh.objectId
LEFT join us_input_opp_oppsalesteam os ON os.transactionNumber = oh.objectId
WHERE (os.Item != 0 OR oh.noOfLines = 0)
GROUP BY oh.objectId, oi.numberInt;

最佳答案

我认为如果使用内连接或连接而不是左连接,时间会更短

关于左连接的Mysql查询性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45893610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com