加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 导出/导入没有索引的5000万行数据库?

发布时间:2021-08-28 03:46:32 所属栏目:大数据 来源: https://www.jb51.cc
导读:我有很多数据 – 5000万行.但由于次优选择,我选择了错误的索引,现在插入需要花费大量时间(插入1000行需要60秒). CREATE TABLE `slots` ( `customerid` int(11) NOT NULL, `orderid` int(11) NOT NULL, `queueid` int(11) NOT NULL AUTO_INCREMENT, `item_id`

我有很多数据 – 5000万行.但由于次优选择,我选择了错误的索引,现在插入需要花费大量时间(插入1000行需要60秒).

CREATE TABLE `slots` (
 `customerid` int(11) NOT NULL,
 `orderid` int(11) NOT NULL,
 `queueid` int(11) NOT NULL AUTO_INCREMENT,
 `item_id` int(3) NOT NULL,
 `variable1` int(3) NOT NULL,
 `variable2` int(3) NOT NULL,
 `variable3` int(3) NOT NULL,
 `variable4` int(3) NOT NULL,
 `variable5` int(3) NOT NULL,
 `variable6` int(3) NOT NULL,
 `variable7` tinyint(1) NOT NULL,
 `variable8` tinyint(1) NOT NULL,
 `variable9` tinyint(1) NOT NULL,
 PRIMARY KEY (`customerid`,`orderid`,`queueid`),
 UNIQUE KEY `queueid` (`queueid`),
 KEY `orderid` (`orderid`)
) ENGINE=InnoDB AUTO_INCREMENT=25883472 DEFAULT CHARSET=latin1

我认为这是因为PRIMARY KEY是多列的,并且每次插入后需要对表进行重新索引(因为那些customerid和orderid不是以任何asccending / descending方式插入,而是在随机位置插入).如果我在queueid上有一个自动增量的主键,它会大大加快插入速度吗?

我可以在没有破坏索引的情况下导出表吗?然后用更好的密钥重新索引它?

我尝试用sql语句删除密钥但是花了很长时间我打断了它.有没有办法看到进展?如果我不知道我需要多长时间,我不会等待 – 这可能是几天之后?

我需要重新索引这个表,因为它最终会有10亿行,插入性能会恶化得更多.

或者最好丢弃我已经插入的内容并使用适当的索引启动一个新表?不要重复使用旧数据?

解决方法:

您可以使用禁用密钥选项导出表.

请参阅此链接
https://dba.stackexchange.com/questions/3069/does-mysqldump-export-indices-by-default

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读