数据库,索引优秀实践

数据库 其他数据库
数据库索引通常很糟糕。只有在设计和有效地使用时才实现数据库索引的权力。否则,索引是磁盘空间和数据库性能的纯粹浪费。

处理数据库索引的简短指南

数据库索引通常很糟糕。只有在设计和有效地使用时才实现数据库索引的权力。否则,索引是磁盘空间和数据库性能的纯粹浪费。但是你不想浪费磁盘空间,所以让我们快速通过一些您需要正确设计和使用索引所需的内容。

只有一个原因创建数据库索引 - 仅在数据库上提供现有或将来的查询负载,即必须根据当前或预期的使用设计索引。所有主要数据库都提供了一种监控索引使用的方法。

使用where子句

SQL查询中的WHERE子句过滤数据。索引在基于某些关键列以预定义的顺序存储数据时,在滤除数据中有助于滤除数据。如果查询使用这些键列,将使用索引,滤波器将更快。

当在Where子句中引用密钥列时,索引的存在不保证其使用情况。因此,您必须确保正在使用索引。大多数数据库都有一个名为查询引擎的组件,该组件决定了许多执行计划中的哪一个来确保查询的最快结果。

查询引擎伴随着解释命令,帮助我们获取执行计划并列出计划的每一步的成本。

有效地使用数据类型

数据库支持只有少量数据类型。已创建所有数据类型以提供特定目的。如果您不使用旨在服务该目的的数据类型,您将在数据库上放入额外的负载以进行隐式铸造,额外的磁盘空间等。

避免的简单方法是使用DateTime来存储日期和时间,使用整数来存储整数。不要使用VARCHAR将所有内容从数字存储到JSON对象。大多数数据库现在支持JSON作为本机数据类型。这意味着您可以使用SQL有效地存储和检索来自数据库中的JSON对象的数据。

不要过度索引

索引创建必须在利用磁盘空间,增加管理开销和增加查询性能之间进行平衡。您无法创建索引以将空间保存为数据库查询性能。您还无法在所有列上创建索引以提供所有查询。它不像那样工作。

您必须通过识别以下内容来检查查询工作负载 -

  • 用于过滤Filter数据的列。
  • 用于联结Join表的列。
  • 用于排序Order数据的列。
  • 用于分组Group数据的列。
  • 用于过滤,Join,Oder或Group的组合使用的列。

这五件事将决定需要创建多少个索引,索引列应该在索引中有什么组合,优先顺序。

请注意,Column_P上的索引IDX_A,Column_Q DESC与

  • Column_Q中的索引IDX_A,列P或,
  • index idx_b在column_p desc上,列q

还要确保您使用一些工具或脚本来标识数据库中是否存在重复索引。

知道不使用索引时

谨防样品条款的诱惑。这是一个指数杀手。知道索引的第一列必须始终存在于要使用的查询的过滤器,订单,加入或组操作中。如果您使用LACE子句使用索引过滤数据,则您应该知道您无法期望索引在类似于“%的东西”中的内容。

当数据库引擎无法隐式地映射数据类型,字符集或索引列的排序时,也没有使用索引。有关此内容的更多详细信息,并查找更多关于索引的限制,请使用此链接。

结论

如果未正确使用,数据库索引可以证明是在反转的角色中,即,它们可以妨碍数据库的性能而不是增强它。为确保数据库由于索引不良而受到影响,请确保正确索引管理,经常探望索引,并正确分析新索引创建。

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2022-02-10 10:51:35

数据库

2021-11-01 05:54:01

数据库安全信息安全网络攻击

2022-09-05 15:12:34

数据库GitHub开发

2021-04-12 10:04:42

数据库安全漏洞网络攻击

2020-06-08 10:41:13

云计算数据工具

2018-08-10 07:50:45

数据库数据库设计实践步骤

2011-03-16 08:54:45

Oracle数据库索引

2011-06-20 06:22:18

ibmdwDB2

2021-11-01 23:57:03

数据库哈希索引

2023-12-20 12:49:05

索引数据检索数据库

2021-03-27 11:05:24

数据库索引MySQL

2021-11-30 21:10:19

数据库B树索引

2024-05-28 00:00:30

Golang数据库

2017-06-22 16:00:07

数据库NoSQL迁移实践

2013-10-08 09:54:41

数据库安全数据库管理

2017-02-08 11:00:50

数据库索引类型

2022-07-14 08:01:59

数据库web映射器

2019-11-26 09:11:50

数据库JavaHadoop

2017-11-22 09:20:41

数据库在线数据迁移Subscriptio

2010-11-30 11:26:49

点赞
收藏

51CTO技术栈公众号