我一直试图在某个SELECT查询上获得一些速度提升.情况如下:(在我看来)有一个巨大的交叉桌.它目前有大约2000万行,但我预计这会增长很多.根据这个交叉表,我需要创建另一个表.为此,我需要执行以下查询:
SELECT hugeCrossingTable.field3, otherTable.field1, hugeCrossingTable.field2 * otherTable.field3 AS someName
FROM hugeCrossingTable
INNER JOIN otherTable ON hugeCrossingTable.field1 = otherTable.field2
Run Code Online (Sandbox Code Playgroud)
现在这导致大约一百万行.我已经在2个表中的field1上都有索引,但它仍然需要18分钟才能完成..我考虑拆分表,但后来我需要找到一种方法来分析数据,因为它是只是一个交叉表没有想到如何做到这一点.
关于如何优化这一点的任何想法?
谢谢.
根据要求,这里是create语句:
CREATE TABLE `hugeCrossingTable` (
`field` int(11) NOT NULL,
`field1` int(11) NOT NULL,
`field2` double(10,5) DEFAULT NULL,
`field3` int(4) DEFAULT NULL,
KEY `field1` (`field1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `otherTable` (
`field` int(10) unsigned NOT NULL AUTO_INCREMENT,
`field1` int(10) unsigned NOT NULL,
`field2` int(10) unsigned NOT NULL,
`field3` decimal(5,2) NOT NULL,
PRIMARY KEY (`field`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT …Run Code Online (Sandbox Code Playgroud)