首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更快地创建索引?

如何更快地创建索引?
EN

Stack Overflow用户
提问于 2010-05-25 05:10:47
回答 3查看 1.6K关注 0票数 5

我的MySQL表中有10mln行,这个表上有7个索引。现在,当我尝试添加8的时候,这需要无限的时间。有没有办法解决这个问题,可以轻松快速地添加8号索引?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-25 05:21:58

这只是MySQL糟糕的上千个方面中的一个。通过设计..。

详情:http://lists.mysql.com/mysql/202489

我并不关心我是否会因为这个答案而失去因果报应。

票数 2
EN

Stack Overflow用户

发布于 2010-05-25 05:13:32

不,创建索引所需的时间与您拥有的数据量成正比。在MS SQL中,我在一个表上创建索引,该表在大约10分钟内包含如此多的记录。

编辑:看到评论后,请详述无限。根据定义,你说它永远不会结束,我的答案是与长时间运行的索引创建有关,而不是无限的。

票数 5
EN

Stack Overflow用户

发布于 2010-05-25 06:21:59

您使用的是哪种引擎?ALTER TABLE的实现...CREATE INDEX变化很大。

使用MyISAM,任何索引更改都需要完整的表重建。这不是引擎固有的,而是一个从未修复过的错误。

使用InnoDB,创建二级索引不需要重新构建表,但只有在使用InnoDB插件(而不是较旧的附带引擎)时,这种优化才可用。更改主键始终需要重新生成,因为它是群集的。

重建表(在任何一种情况下)都需要大量工作,因为它必须重建所有现有索引,并重写行,才能完成操作。如果您的表可以放在RAM中(10M行听起来应该很容易),这是相对较快的。

重建一个不适合ram的表是相当昂贵的,我建议尽可能避免这样做。

重建不适合ram的单个索引是非常昂贵的,最好避免。

您需要多长时间添加一次新索引?也许您可以用已经创建的索引来填充表?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2900355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档