当前位置:  开发笔记 > 数据库 > 正文

拥有多个指数有哪些缺点?

如何解决《拥有多个指数有哪些缺点?》经验,为你挑选了4个好方法。

我最近通过给SQLite一个很好的索引来加速一个复杂的查询.这样的结果让我想知道是否应该索引常用于JOIN或ORDER BY子句的许多其他字段.但是我不想过度热心并让它适得其反:我认为必须有一些理由创建索引,或者默认情况下每个字段都会被编入索引.

我在这种情况下使用SQLite,但当然也欢迎DBMS不可知的建议.



1> chaos..:

索引会减慢插入和更新(这可能会成为锁定的严重问题)并降低成本磁盘空间.这就是它.


刀片不从指数...更新和删除需要找到相关的行(或多个)中受益,使他们受益于该步骤的指标,但随后如果你有很多指标,即使是效益可以抵消.正如你所说,这是一个平衡:)
这涵盖了它.不要忘记你**需要适当的索引以获得良好的插入/更新/删除性能.像所有事情一样,这是一种平衡.

2> MarkR..:

索引使用磁盘空间来存储,并且需要时间来创建和维护.未使用的没有任何好处.如果查询有许多候选索引,则可以通过让服务器为查询选择"错误"索引来减慢查询速度.

使用这些因素来决定是否需要索引.

通常可以创建永远不会被使用的索引 - 例如,仅具有两个可能值的(非空)字段上的索引几乎肯定是无用的.

您需要解释自己的应用程序的查询,以确保频繁执行的查询在可能的情况下使用合理的索引,并且不创建比执行该操作所需的索引更多的索引.



3> Jared Miller..:

为了测试您的特定应用程序,您可以在运行的任何查询前放置"EXPLAIN QUERY PLAN"并检查结果.它将显示它在哪里或不使用索引.

通过这种方式,您可以确定可以使用更多索引的位置以及它们不会产生影响的位置.

Sqlite解释

我使用SqliteSpy手动测试似乎导致问题的查询.



4> Walter Mitty..:

磁盘空间中索引的成本通常是微不足道的.在表更改时更新索引的额外写入的成本通常是适中的.额外锁定的成本可能很高.

它取决于表上的读取与写入比率,以及索引实际用于加速查询的频率.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有