2011-10-26 12 views
0

私は2million行以上のテーブルのインデックスを変更しています。 実行時間が3000秒を超えました。 私は何かが私のPC上で間違って動作していると思う前に他の変更は、同じテーブルで長時間かかることはありませんでした。既存のデータですべてのインデックスを追加しました。 2百万の存在する行のインデックスを変更するのにどれくらい時間がかかりますか?実行時間は、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

で大きなテーブルにインデックスを作成する彼らの経験について共有しています
関連する問題