首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL -为什么不为每个字段建立索引?

MySQL -为什么不为每个字段建立索引?
EN

Stack Overflow用户
提问于 2011-03-27 07:29:46
回答 6查看 37.3K关注 0票数 121

最近,我学到了索引的神奇之处,性能得到了极大的提高。然而,根据我所学到的,我似乎找不到这个问题的答案。

索引是很棒的,但是为什么不能简单地索引所有字段来使表变得难以置信的快呢?我相信不这样做是有充分理由的,但是30个字段的表中有3个字段呢?30个字段中有10个字段呢?应该在哪里划清界限,为什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-27 07:33:23

索引占用内存(RAM)空间;索引太多或太大,DB将不得不将它们交换到磁盘或从磁盘交换。它们还增加了插入和删除时间(必须为插入/删除/更新的每个数据块更新每个索引)。

你没有无限的记忆。使所有索引都适合RAM = good。

你没有无限的时间。只对需要索引的列进行索引可以最小化插入/删除/更新性能影响。

票数 136
EN

Stack Overflow用户

发布于 2011-03-27 07:34:34

请记住,每次更新、插入或删除行时,都必须更新每个索引。因此,索引越多,写操作的性能就越慢。

此外,每个索引都会占用更多的磁盘空间和内存空间(当被调用时),因此它也可能会降低读取操作的速度(对于大型表)。Check this out

票数 30
EN

Stack Overflow用户

发布于 2011-03-27 07:32:12

您必须平衡CRUD需求。写入表变得很慢。至于在哪里划线,这取决于数据的访问方式(排序、过滤等)。

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

https://stackoverflow.com/questions/5446124

复制
相关文章

相似问题

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