我有一张包含 14 亿条记录的表。表结构如下:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Run Code Online (Sandbox Code Playgroud)
要求是在列上创建索引text
。
表大小约为34G。
我尝试通过以下语句创建索引:
ALTER TABLE text_page ADD KEY ix_text (text)
Run Code Online (Sandbox Code Playgroud)
经过 10 个小时的等待,我终于放弃了这种方法。
这个问题有什么可行的解决方案吗?
UPDATE:该表不太可能被更新或插入或删除。之所以要在列上创建索引,text
是因为这种sql查询会被频繁执行:
SELECT page_id FROM text_page WHERE text = ?
Run Code Online (Sandbox Code Playgroud)
更新:我已经通过对表进行分区解决了这个问题。
该表在 column 上分为 40 个部分text
。然后在表上创建索引大约需要1个小时才能完成。
当表变得很大时,MySQL 索引创建似乎变得很慢。分区将表减少为更小的主干。
归档时间: |
|
查看次数: |
23263 次 |
最近记录: |