我有一个表(在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
Run Code Online (Sandbox Code Playgroud)
如果我要添加索引,我认为这个表上的查询可能会更快.我试过这个:
create index heading_label
on unused (heading_label) using btree
Run Code Online (Sandbox Code Playgroud)
我让这个命令在重启MySQL之前运行了一两个小时.虽然这个表有超过500万行,但似乎不需要花费一个多小时才能运行这类东西.但也许这是正常的.我真的不知道自己在做什么.有人可以开导我吗?
irc*_*ell 16
这是正常的,具体取决于您的服务器规格.MySQL创建索引的方式是通过表,然后排序和添加索引.这意味着它需要重新编写所有数据,然后对所有数据进行排序(无论如何都不便宜).这取决于您的服务器的I/O性能以及您可以提供多少内存.
以下是一些资源以获取更多信息......
| 归档时间: |
|
| 查看次数: |
7814 次 |
| 最近记录: |