我正在構建一張將用於READ ONLY的表,這就是爲什麼我決定使用MyISAM而不是InnoDB(但我願意接受建議)的原因。但是,這個表格需要非常大。雖然每行大約12到14個字節,但表本身將包含數億到數十億行。MyISAM索引使用LOAD DATA INFILE減慢
表看起來是這樣的:
CREATE TABLE `tb1` (`wid` int(11) NOT NULL DEFAULT '0',
`pid` int(11) NOT NULL DEFAULT '0',
`hit` tinyint(3) unsigned NOT NULL DEFAULT '0',
KEY `wid` (`wid`,`hit`,`pid`))
ENGINE=MyISAM DEFAULT CHARSET=latin1
我加載在塊使用LOAD DATA LOCAL INFILE
文本文件中的所有數據。
我需要30秒來加載大約20M行。然後我加載一個有100M行的塊,10分鐘後,取消查詢後,總共只有38M行。 (在10分鐘內18M行?)
看來這種類型的加載是指數而不是線性的。這是爲什麼?
當我有一個不斷增加的索引時,我該如何加速LOAD DATA INFILE?
在LOAD DATA INFILE速度方面,使用InnoDB代替MyISAM有沒有好處?
會不會是快沒有索引加載所有數據..然後事後申請一個?
感謝您的輸入。