2011-10-26 56 views
0

我正在更改具有多於200萬行的表上的索引。 執行時間現在長於3000秒。 我認爲任何東西在我的電腦上都有問題,因爲之前的其他更改從未在同一張桌子上花過這麼長時間。我已將所有索引與現有數據相加。 有沒有人有經驗需要多少時間來改變具有200萬行存在行的索引?執行時間通過在mysql上添加索引表

我如何檢查是否有任何工作正常我的本地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; 

非常感謝你。

回答

1

大桌子上的索引創建過程相對較慢,雖然我不是專家,但我相信在這方面沒有什麼可以做的。

時間不僅取決於表的大小,而且很大程度上取決於正在創建索引的列。 採取3000秒是正常的我猜,對於有200萬行的表,我曾經創建了一個具有近350萬行的表上的複合索引,並花費了2個多小時.....

這裏有一些鏈接人們對他們在MySQL

http://lists.mysql.com/mysql/212738

http://forums.mysql.com/read.php?24,356410,356889#msg-356889

創建大表上的索引的經驗分享