MySQL 中的索引数量是否越多越好?

devtools/2025/2/26 4:32:58/

不是越多越好,我们要根据实际需要来增加索引。InnoDB 中每创建一个索引,就会多维护一个B+树结构。索引的目的是为我们带来查询效率上的提高。如果不是频繁使用的查询字段,没有必要创建索引。

增加索引带来的问题
  1. 需要的磁盘存储空间增大,增加了一个B+树结构
  2. 影响缓冲池的命中率,对表进行操作的时候,索引数据也会加载到内存中,索引数据占用了内存,表数据就会相应的变少了,缓冲池的命中率降低
  3. 增删改的效率会降低,在索引存在时,每个涉及索引的操作都需要对索引数据进行维护
  4. 索引的命中会带来不确定性,可能会命中了一个不是最优的索引

如果不能带来查询效率上的提高,创建索引就没有必要

创建索引的依据
  1. 需要作为查询条件频繁查询的字段,经常在 order by 、group by 、 distinct 后面的字段也可以建立索引
  2. 字段的值增加索引后可以大规模的加快查询效率,要使用高选择性的字段作为索引。类似性别字段,没必要创建索引
  3. 减少回表,如果经常性使用查询条件 field1=value1 去查询 field2,可以使用 field1,field2 创建联合索引
  4. 复合索引,多个字段一起查询,可以创建复合索引,提升查询效率

http://www.ppmy.cn/devtools/162724.html

相关文章

PDF无限使用,永久免费!

今天我给大家安利一个超好用的PDF处理网站,简直是处理文件的神器! 这个网站完全免费,没有任何限制,用起来特别爽! 它是一个在线的PDF编辑平台,完全不用担心付费或者注册的问题。 这里没有VIP和普通用户的区…

使用C++实现简单的TCP服务器和客户端

使用C实现简单的TCP服务器和客户端 介绍准备工作1. TCP服务器实现代码结构解释 2. TCP客户端实现代码结构解释 3. 测试1.编译:2.运行 结语 介绍 本文将通过一个简单的例子,介绍如何使用C实现一个基本的TCP服务器和客户端。这个例子展示了如何创建服务器…

Docker Swarm 内置的集群编排

在现代容器化应用中,容器编排(Container Orchestration)是至关重要的,它负责自动化容器的部署、扩展、负载均衡和管理。Docker Swarm 是 Docker 提供的原生集群管理和容器编排工具,允许用户通过 Docker CLI 在多个 Doc…

UE5实现角色二段跳

1.二段跳 首先如果不想使用UE中增强输入功能,可以在SetupPlayerInputComponent函数中绑定对应的操作,具体可以自行查找。如果使用增强输入,可以通过创建一个UE自带的第三人称模板C项目学习,假设当前项目是创建自UE第三人称模板项目…

在windows下安装windows+Ubuntu16.04双系统(下)

这篇文章的内容主要来源于这篇文章,为正式安装windowsUbuntu16.04双系统部分。在正式安装前,若还没有进行前期准备工作(1.分区2.制作启动u盘),见《在windows下安装windowsUbuntu16.04双系统(上)》 二、正式安装Ubuntu …

Windows、Mac、Linux,到底该怎么选?

在当今数字化时代,电脑已成为我们生活和工作中不可或缺的工具。而操作系统作为电脑的核心,其选择直接影响着我们的使用体验。Windows、Mac 和 Linux 作为三大主流操作系统,各自有着独特的优势和不足。今天,就来给大家详细分析一下…

如何使用Spring boot框架实现图书管理系统

使用 Spring Boot 框架实现图书管理系统可以按照以下步骤进行,涵盖了从项目搭建、数据库设计、后端接口开发到前端页面展示的整个流程。 1. 项目搭建 可以使用 Spring Initializr(https://start.spring.io/ )来快速创建一个 Spring Boot 项目…

Win11安装dpanel实现docker可视化面板,并解决端口冲突的问题

目标是给Win11的docker安装dpanel可视化面板,可以更直观的看到docker中的数据。 执行镜像(没有则自动拉取) 首先配置好docker加速环境(阿里云的docker加速等),然后访问GitHub - donknap/dpanel: 轻量化 do…