我正在更改超过200万行的表上的索引。 执行时间现在超过3000秒。 我认为我的电脑上的任何工作都有问题,因为之前的其他更改从未在同一张桌子上花费太长时间。我已经用现有数据添加了所有索引。 有没有人有经验需要多长时间才能更改存在200万行的索引?
如何检查本地mysql安装是否正常?
以下是表格定义:
CREATE TABLE `sal_forwarding` (
`sid` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`f_shop` INT(11) NOT NULL,
`f_offer` INT(11) DEFAULT NULL,
`link` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`offerCode` VARCHAR(255) DEFAULT NULL,
`sub2` VARCHAR(200) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`forwardTime` DATETIME NOT NULL,
`cid` CHAR(32) DEFAULT NULL,
`f_partner` VARCHAR(20) NOT NULL,
`t` VARCHAR(30) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT '0',
`toolbarUser` TINYINT(1) NOT NULL DEFAULT '0',
`blog` TINYINT(1) DEFAULT '0',
`clickedPosition` INT(10) UNSIGNED DEFAULT NULL,
`usedFrame` TINYINT(1) NOT NULL DEFAULT '0',
`sub3` VARCHAR(200) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`sub4` VARCHAR(200) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`sub5` VARCHAR(200) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`sub6` VARCHAR(200) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`sub7` VARCHAR(200) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`f_affiliateId` TINYINT(3) UNSIGNED NOT NULL,
`browser` VARCHAR(50) DEFAULT NULL,
`bversion` VARCHAR(5) DEFAULT NULL,
`os` VARCHAR(50) DEFAULT NULL,
`forwardDate` DATE NOT NULL,
PRIMARY KEY (`sid`),
KEY `f_shop` (`f_shop`,`forwardDate`,`cid`),
KEY `f_partner` (`f_partner`,`forwardDate`),
KEY `forwardDate` (`forwardDate`,`cid`),
KEY `forwardDate_2` (`forwardDate`,`f_shop`),
KEY `forwardDate_3` (`forwardDate`,`f_shop`,`f_partner`),
KEY `forwardDate_4` (`forwardDate`,`f_partner`,`cid`),
KEY `forwardDate_5` (`forwardDate`,`f_affiliateId`),
KEY `forwardDate_6` (`forwardDate`,`f_shop`,`sid`)
) ENGINE=INNODB AUTO_INCREMENT=10747233 DEFAULT CHARSET=latin1;
非常感谢。
答案 0 :(得分:1)
大表上的索引创建过程相对缓慢,虽然我不是专家,但我相信在这方面你没有什么可以做的。
时间不仅取决于表的大小,还主要取决于创建索引的列。 花费3000秒是正常的我猜,对于有200万行的表,我曾经在一张表上创建了复合索引,行数近350万行,花了2个多小时......
以下是人们分享他们在MySQL中为大型表创建索引的经历的一些链接
http://lists.mysql.com/mysql/212738
http://forums.mysql.com/read.php?24,356410,356889#msg-356889