当前位置: 首页 > 面试题库 >

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

施刚毅
2023-03-14
问题内容

最近,我了解了索引的奇妙之处,并且性能得到了极大的提高。但是,据我所知,我似乎找不到该问题的答案。

索引很棒,但是为什么有人不能只索引所有字段以使表变得如此快呢?我确定有充分的理由不这样做,但是三十字段表中的三个字段又如何呢?30个字段中有10个?一个人应该划在哪里,为什么呢?


问题答案:

索引占用内存(RAM)中的空间;索引太多或太大,数据库将不得不在磁盘之间来回交换它们。它们还会增加插入和删除时间(必须为每个插入/删除/更新的数据更新每个索引)。

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

您没有无限的时间。仅对需要索引的列建立索引可最大程度地减少插入/删除/更新性能的影响。



 类似资料:
  • 在Solr围绕原子更新的文档中,他们提到一个字段应该是非索引和非存储的。 https://lucene.apache.org/solr/guide/7_6/updating-parts-of-documents.html#in-place-update-example 只有当要更新的字段满足以下三个条件时,才使用该方法执行原子更新操作: 是非索引(indexed=“false”)、非存储(stor

  • 问题内容: 我有一张表,其中有一个名为的整数列。我在该列上有一个索引。 但是似乎Postgres不想使用我的索引: 知道为什么会这样吗? 问题答案: 因为: 您选择的行太多了,以至于读取整个表都比较便宜。

  • 表字段:id,content(text类型),content字段已添加fulltext索引,10万条数据,内容是用navicat生成的随机文本。 查询SQL如下: 第一条SQL:耗时13秒 第二条SQL:耗时189秒 我搞不懂为啥差距这么大,那fulltext索引的意义在哪里?

  • 问题内容: 我有一个查询,在我认为可能不使用索引的情况下,出于好奇,我将其重现: 创建一个具有1.000.000行(在中有10个不同的值,在中有500个字节的数据)的。 创建一个索引并收集表统计信息: 尝试获取和的不同值: 不使用索引,前提是提示不会更改。 我想在这种情况下不能使用索引,但是为什么呢? 问题答案: 我运行了Peter的原始内容并复制了他的结果。然后我应用了dcp的建议… 之所以如此

  • 问题内容: 阅读有关ADT列表的Java文档时,它说: List接口提供了四种位置(索引)访问列表元素的方法。列表(如Java数组)从零开始。请注意,对于某些实现(例如,LinkedList类),这些操作可能在时间上与索引值成比例执行。因此,如果调用者不知道实现,则遍历列表中的元素通常比对其进行索引更可取。 这到底是什么意思?我不明白得出的结论。 问题答案: 在链接列表中,每个元素都有一个指向下一

  • 本文向大家介绍Mysql如何为表字段添加索引?相关面试题,主要包含被问及Mysql如何为表字段添加索引?时的应答技巧和注意事项,需要的朋友参考一下 1.添加PRIMARY KEY(主键索引) 2.添加UNIQUE(唯一索引) 3.添加INDEX(普通索引) 4.添加FULLTEXT(全文索引) 5.添加多列索引