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

为什么以及在哪里使用INDEXes-利弊

冯曾笑
2023-03-14
问题内容

我是数据库编程的新手,我想知道索引的负面影响是什么?据我了解,索引加快了必须在数据库中搜索特定值(例如SELECT)的操作。

考虑以下示例:

对于table Example(在column上具有索引)user_name,操作:

SELECT TestField FROM Example WHERE user_name=XXXX

作为索引的结果将更快。

我的问题是:使用索引有什么弊端?如果索引只是给我们带来好处(提高性能),为什么不将它们设置为默认值呢?


问题答案:

好吧,您可能可以填写有关索引的书,但总之,在创建索引时,这里需要考虑以下几点:

尽管它(主要)加快了选择的速度,但它却减慢了插入,更新和删除的速度,因为数据库引擎不必只写数据,也可以写索引。索引需要RAM中硬盘上的空间(并且更重要)。无法保存在RAM中的索引几乎没有用。仅有几个不同值的列上的索引不会加快选择的速度,因为它不能对很多行进行排序(例如,“
gender”列,通常只有两个不同的值-男性,女性)。

例如,如果您使用MySQL,则可以检查引擎是否通过在选择之前添加“ explain”来使用索引-对于上述示例 EXPLAIN SELECT TestField FROM Example WHERE username=XXXX



 类似资料:
  • 问题内容: 我是新来回应胡克斯!我正在尝试在我的代码中使用useState。当我使用它时,我发现了一个术语“惰性初始状态” https://reactjs.org/docs/hooks- reference.html 但是我无法想到任何useCase都可以在这种懒惰的状态初始化中发挥作用! 就像说我的DOM正在渲染并且它需要 状态 值,但是我的useState尚未初始化它!并说如果您已经渲染了DO

  • 问题内容: 我是Angular 4的新手,所以谁能解释在Angular 4中的使用方式和位置? 实际上,我想从父组件覆盖子组件的某些CSS属性。此外,它在IE11上受支持吗? 问题答案: 通常, 可使用组合器将样式强制降低到 。这个选择器有一个别名>>>,现在还有另一个叫做:: ng-deep的别名。 由于 已弃用,建议使用 例如: 和 它将应用于子组件

  • 问题内容: 我正在阅读一些有关Java中异常处理的内容,以便能够编写更好的代码。好吧,我承认,我有罪。我使用了太多try-catch {}块,在捕获中使用了它,甚至没有使用适当的记录器(实际上是和被重定向到,因此生成了日志)。但是,经过几个小时的阅读,我发现自己在一个陌生的地方:未知。如果异常被设计为传递有关异常流状态的信息,那么人们如何知道WHERE是使用该信息执行操作的适当级别? 例如,当发生

  • 问题内容: 抱歉,如果我有点模棱两可,但是我试图了解使用Node.js而不是其他服务器端语言的真正优势。 我是JavaScript爱好者,所以我可能会玩Node.js,但我想知道是否应该在项目中使用它。 问题答案: 在V8上发生了异步非阻塞I / O 构建。 因此,我们拥有了Google JavaScript解释器V8的所有性能提升。由于JavaScript性能竞赛尚未结束,您可以期望Google

  • 问题内容: 我们应该如何以及在何处使用静态修饰符: 1.领域和 2.方法? 对于例如在类中,字段的方法,如ABS(),ATAN(),COS()等是静态的,即它们可以作为被访问: 但是,为什么这是个好习惯呢? 说,我不是保持静态,而是创建类的对象并访问它,无论如何,我都会得到警告,您正在尝试以非静态方式访问静态方法(如所指出的那样) @duffymo编写,而不是Math类)。 更新1: 因此,实用程

  • 问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有