我有一张有14亿条记录的表。表结构如下:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
要求是在列上创建索引text
。
该表的大小约为34G。
我试图通过以下语句创建索引:
ALTER TABLE text_page ADD KEY ix_text (text)
经过十个小时的等待,我终于放弃了这种方法。
有什么可行的解决方案吗?
UPDATE:该表不太可能被更新,插入或删除。之所以要在该列上创建索引,text
是因为这种SQL查询将经常执行:
SELECT page_id FROM text_page WHERE text = ?
更新:我已经通过分区表解决了这个问题。
桌子被分成40列text
。然后在表上创建索引大约需要1个小时。
当表大小很大时,MySQL索引的创建似乎变得很慢。分区将表缩小为较小的主干。
CREATE INDEX
语句有什么问题?