我有一个MySQL表叫做unused
,它大约有540万行。这个表长这样:
CREATE TABLE `unused` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`account_id` bigint(20) DEFAULT NULL,
`heading_label` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `fk_account_id` (`account_id`),
CONSTRAINT `unused_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `account` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=80524905 DEFAULT CHARSET=latin1
我认为如果添加索引,该表上的查询速度可能会更快。我尝试运行了以下代码:
create index heading_label
on unused (heading_label) using btree
在重启MySQL之前,我让这个命令运行了一两个小时。尽管这个表有超过500万行,但似乎不应该花费一个多小时来运行这种操作。但也许这是正常的。我真的不知道我在做什么。有谁能给我指点迷津吗?
datadir
仅暂时移动到基于RAM的磁盘上(请参见https://learningwell.se/mounting-mysql-in-ram作为参考),以加速索引创建过程。但是,这将需要将您的完整数据库服务离线一段时间。 - Jaime Hablutzel