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

数据库索引:是好事还是坏事还是浪费时间?

后学
2023-03-14
问题内容

此处通常建议添加索引,以解决性能问题。

(我只在说阅读和查询,我们都知道索引会使写入变慢)。

多年来,我已经在DB2和MSSQL上尝试了很多html" target="_blank">方法,结果总是令人失望。

我的发现是,无论索引有多“明显”,它都会使事情变得更好。事实证明,查询优化器更智能,而我的明智选择的索引几乎总是使事情变得更糟。

我应该指出,我的经验主要与小型表(<100‘000行)有关。

谁能提供一些切实可行的索引选择指南?

正确的答案将是一系列建议,例如:

  • 永不/总是索引少于/多于NNNN记录的表
  • 从不/总是考虑多字段键上的索引
  • 从不/始终使用聚簇索引
  • 永远不会/永远不会在单个表上使用超过NNN个索引
  • 当[我渴望了解的某些魔术条件]时,永远不要/总是添加索引

理想情况下,答案将提供一些启发性的例子。


问题答案:

索引有点像化学疗法…太多了,它杀死了您…太少了,您就死了…做错了方法,然后就死了。您必须知道使它不会杀死您的数量,频率和种类。

您的硬件,平台,环境,负载都将发挥作用。所以回答你的问题..

是的,可能有时候。



 类似资料:
  • 基于48.3定制管理服务器端口 使用默认HTTP端口公开管理endpoint对于基于云的部署是一个明智的选择。但是,如果您的应用程序在您自己的数据中心内运行,您可能更愿意使用不同的HTTP端口公开endpoint。 有一个不同的端口让执行器健康endpoint运行的价值是什么?在什么样的场景下? 通常,一个端口用于所有服务endpoint是否足够好?在另一个上实现设置健康endpoint是否为标准

  • 问题内容: 我曾在一些商店中工作过,在这些商店中,我已将异常处理实现到事件日志以及数据库的表中。 每个都有优点,根据我的经验,我可以重点介绍以下几个优点: 事件记录日志 例外的行业标准位置(+) 易于记录(+) 可以在此处记录数据库连接问题(+) 可以在事件日志的顶部构建报告和查看应用程序(+) 需要每隔一段时间刷新一次,如果在那里报告很多(-) 不像SQL日志记录那样可扩展[在SQL中添加自定义

  • 问题内容: 我习惯在所有程序中广泛使用 静态变量 ,尤其是在使用Android时。我倾向于使用它们,因为有时 通过Intents发送10个或更多的值 会很 麻烦 。因此,我只是将 它们声明为静态 变量,并通过使用“点”运算符轻松地在其他类中访问它们。使用静态变量的另一个原因是当我要在整个应用程序中使用 Utility类时 。就像我在下面给出的代码一样,它可以帮助我 在不同的活动中使用变量 。 Ut

  • 问题内容: 我必须每小时更新我的​​MySQL数据库,我想知道使用cronjob VS MySQL事件有什么优点/缺点?例如,哪个更快?哪个更安全?谢谢! 问题答案: 我总会去做一份工作,因为: 这就是系统管理员期望的结果(这一点不可低估) crobtab防弹,久经考验,非常广泛地使用和理解 您可以在需要的地方自由定向/分析错误/成功消息 有些数据库任务要求/首选mysql脱机(例如,完全备份),

  • 问题内容: 我们计划使用触发器和需要审计的每个表的单独历史表在数据库中引入简单的审计跟踪。 例如考虑表StudentScore,它只有很少的外键(例如StudentID,CourseID)将其链接到相应的父表(Student&Course)。 如果StudentScore需要审核,我们计划创建审核表StudentScoreHistory- 如果修改了StudentScore中的任何行,我们会将旧行

  • 要做到这一点,我应该启用哪个功能--动态链接、应用程序索引还是应用程序邀请?