MySQL的索引是以及数据库索引应用

【05】MySQL数据库的索引是什么,怎么用?详解与应用 索引(Index)是数据库中用于加速数据检索的一种数据结构。可以将其看作是书籍中的目录,通过索引可以快速找到相关数据的位置,从而避免全表扫描。在MySQL中,索引主要用于提高查询效率,但也会增加写操作的开销(因为插入、更新和删除数据时也需要更新索引)。索引是数据库性能优化的关键工具,通过合理使用索引可以显著提高查询效率。在使用索引时,要注意选择合适的索引类型,避免过度索引,并根据实际查询需求设计索引。此外,定期分析和优化索引,也是保持数据库高效运作的重要措施。 阅读详情
  1. 数据库引入了索引
    用户对数据库最频繁的操作是进行数据查询 。一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费。为了提高检索数据的能力,数据库引入了索引机制。
  2. 有关“索引”的比喻
    从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便、快捷。
  3. 数据库索引实际是什么?(两部分组成)
    索引是一个 单独的、物理的数据库结构,它是某个表中一列或若干列值的集合 和相应的指向表中物理标识这些值的数据页的逻辑指针 清单 。
  4. 索引在表中的角色
    一个表的存储是由两部分组成的,一部分用来存放表的数据页面,另一部分存放索引页面。索引就存放在索引页面上,
  5. 索引高效原理
    通常,索引页面相对于数据页面来说小得多。当进行数据检索时,系统先搜索索引页面,从中找到所需数据的指针,再直接通过指针从数据页面中读取数据。
  6. 索引的分类
    在SQL Server 的数据库中按存储结构 的不同将索引分为两类:簇索引(Clustered Index)和非簇索引(Nonclustered Index)。
    1. 簇索引对表的物理数据页 中的数据按列进行排序 ,然后再重新存储到磁盘上,即簇索引与数据是混为一体 , 的它的叶节点中存储的是实际的数据。由于簇索引对表中的数据一一进行了排序,因此用簇索引查找数据很快。但由于簇索引将表的所有数据完全重新排列了,它所 需要的空间也就特别大,大概相当于表中数据所占空间的120% 。表的数据行只能以一种排序方式存储在磁盘上,所以一个表只能有一个簇索引。
    2. 非簇索引具有与表的数据完全分离 的结构,使用非簇索引不用将物理数据页中的数据按列排序。非簇索引的叶节点中存储了组成非簇索引的关键字的值 和行定位器 。 行定位器的结构和存储内容取决于数据的存储方式。如果数据是以簇索引方式存储的,则行定位器中存储的是簇索引的索引键;如果数据不是以簇索引方式存储的, 这种方式又称为堆存储方式(Heap Structure),则行定位器存储的是指向数据行的指针。非簇索引将行定位器按关键字的值用一定的方式排序,这个顺序与表的行在数据页中的排序是不匹 配的。由于非簇索引使用索引页存储因此它比簇索引需要更多的存储空间且检索效率较低但一个表只能建一个簇索引,当用户需要建立多个索引时就需要使用非簇索 引了。

      小结:Clustered Index 是与物理数据混在一起并对物理数据进重排,就像使用拼音查字典;Unclustered Index 是与物理数据完全分离的,利用额外空间对关键字进行重排,就像使用部首查字典。

 

数据库索引应用

一、索引的概念
        索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

二、索引的特点
    1.索引可以加快数据库的检索速度 
    2.索引降低了数据库插入、修改、删除等维护任务的速度 
    3.索引创建在表上,不能创建在视图上 
    4.索引既可以直接创建,也可以间接创建 
    5.可以在优化隐藏中,使用索引 
    6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引 
    7.其他

三、索引的优点
    1.创建唯一性索引,保证数据库表中每一行数据的唯一性
    2.大大加快数据的检索速度,这也是创建索引的最主要的原因
    3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
    4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

四、索引的缺点
    1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
    2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大
    3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度

五、索引分类
    1.直接创建索引和间接创建索引
    直接创建索引: CREATE INDEX mycolumn_index ON mytable (myclumn)
    间接创建索引:定义主键约束或者唯一性键约束,可以间接创建索引
    2.普通索引和唯一性索引
    普通索引:CREATE INDEX mycolumn_index ON mytable (myclumn)
    唯一性索引:保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用
    CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)
    3.单个索引和复合索引
    单个索引:即非复合索引
    复合索引:又叫组合索引,在索引建立语句中同时包含多个字段名,最多16个字段
    CREATE INDEX name_index ON username(firstname,lastname)
    4.聚簇索引和非聚簇索引(聚集索引,群集索引)
   聚簇索引:物理索引,与基表的物理顺序相同,数据值的顺序总是按照顺序排列
    CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH
    ALLOW_DUP_ROW(允许有重复记录的聚簇索引)
   非聚簇索引:CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

六、索引的使用
   1.当字段数据更新频率较低,查询使用频率较高并且存在大量重复值是建议使用聚簇索引
    2.经常同时存取多列,且每列都含有重复值可考虑建立组合索引
    3.复合索引的前导列一定好控制好,否则无法起到索引的效果。如果查询时前导列不在查询条件中则该复合索引不会被使用。前导列一定是使用最频繁的列
    4.多表操作在被实际执行前,查询优化器会根据连接条件,列出几组可能的连接方案并从中找出系统开销最小的最佳方案。连接条件要充份考虑带有索引的表、行数多的表;内外表的选择可由公式:外层表中的匹配行数*内层表中每一次查找的次数确定,乘积最小为最佳方案
    5.where子句中对列的任何操作结果都是在sql运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译 时就能得到,那么就可以被sql优化器优化,使用索引,避免表搜索(例:select * from record where substring(card_no,1,4)=’5378’ 
&& select * from record where card_no like ’5378%’)任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边
    6.where条件中的’in’在逻辑上相当于’or’,所以语法分析器会将in (’0′,’1′)转化为column=’0′ or column=’1′来执行。我们期望它会根据每个or子句分别查找,再将结果相加,这样可以利用column上的索引;但实际上它却采用了"or策略 ",即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉重复行,最后从这个临时表中计算结果。因此,实际过程没有利用 column上索引,并且完成时间还要受tempdb数据库性能的影响。in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子 句拆开;拆开的子句中应该包含索引
    7.要善于使用存储过程,它使sql变得更加灵活和高效


MYSQL索引使用


http://blog.youkuaiyun.com/zf213/article/details/4247353


MySQL数据库的索引覆盖原理与应用 本技术分析聚焦于MySQL数据库的索引覆盖原理与应用。首先介绍了索引覆盖在数据库领域的重要背景和发展轨迹,明确其解决的问题空间。接着从第一性原理出发推导其理论基础,分析数学形式化表达及理论局限性与竞争范式。在架构设计方面,对系统进行分解,构建组件交互模型并可视化呈现。实现机制上,进行算法复杂度分析、代码优化及边缘情况处理。阐述了索引覆盖在实际应用中的实施策略、集成方法、部署与运营管理要点。同时探讨了高级考量因素,如扩展性、安全性、伦理维度和未来发展方向。 阅读详情

相关推荐

手把手教你用vivado2018.3为复旦微JFMQL15T打IP补丁(含环境变量配置技巧)

本文详细介绍了在Vivado 2018.3环境中为复旦微JFMQL15T开发板打IP补丁的全流程,包括环境变量配置、IP缓存管理等关键步骤。通过实战验证的解决方案,帮助工程师快速搭建开发环境,解决国产芯片开发中的常见问题,提升开发效率。

weixin_30374009的博客 732

Mysql索引的应用

MySQL索引的应用

DTY9999的博客 8200

解决Cursor AI工具地域限制报错的方法与原理

地理围栏(GEO-fencing)是现代云服务常用的访问控制技术,通过IP地址库匹配、支付系统验证等方式实现区域限制。在AI编程工具领域,这种技术常导致类似Cursor出现的'unsupported country region'报错。从技术实现看,服务商会综合HTTP头信息、时区设置等多维度数据进行地理位置判断。开发者可通过调整网络出口、配置本地模型或使用企业版等方案解决。本文以Cursor为例,详细分析了AI工具地域限制的底层原理,并提供了包括Ollama本地部署在内的多种工程实践方案,特别适合需要稳定

weixin_30820077的博客 974

MYSQL索引的使用

索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)

熊浪的博客 3061

关于esp32蓝牙模块的使用——esp32学习笔记

关于esp32蓝牙模块的使用——esp32学习笔记 零、前言 esp32自带蓝牙模块可以让我们进行蓝牙连接并进行数据交换 一、经典蓝牙BT 首先来编写代码,经典蓝牙的使用非常简单,首先声明使用了BluetoothSerial这个库,然后使用SerialBT.begin函数设置蓝牙的名字,再然后就是设置配对码,由于这里没有用到配对码,所以我将注释掉。当配对成功我们就使用printf函数打印出蓝牙配对成功。 #include <Arduino.h> #include <BluetoothSer

qq_53965184的博客 5万+

c# U盘禁用---守护进程(插入,拔出,卸载等操作)

一、简介 传统的对U盘禁用,我们多采用修改注册表的方式,详情参考:https://blog.youkuaiyun.com/qq_25372599/article/details/79815407;本文将介绍一种其他的方式–后台守护程序。其原理非常简单:当守护程序检测到U盘的插入信号,我们自动卸载U盘,致使系统无法识别U盘,达到禁用U盘的效果。 二、程序设计 2.1 变量定义 strin...

星星之火燃亮码空 2847

MSQL:Mysql性能优化

Mysql性能优化,即提高数据库运行速度以及减少磁盘空间使用。常常考虑的优化有 查询速度、优化更新速度和优化服务器。 针对数据量大,查询操作连接操作频繁的语句进行优化,可以明显提高数据库的性能。如果Mysql数据库中需要进行大量的查询操作,那么对查询语句的优化可以提高整体的查询速度;如果连接Mysql数据库的用户很多,那么就需要对Mysql服务器进行优化,否则,大量的用户同时连接Mysql数据库...

颠沛的小丸子 595

单细胞分析实战:用R语言绘制带连线的堆叠柱状图(附完整代码)

本文详细介绍了如何使用R语言绘制带连线的堆叠柱状图进行单细胞转录组数据分析,特别适用于展示细胞比例变化趋势。通过完整代码示例和实战技巧,帮助研究者优化多组别比较的可视化效果,提升科研图表质量。

yhn4567890的博客 390

数据库基础:讲解MySQL索引的概念及数据库索引的应用<转载>

1.数据库引入了索引  用户对数据库最频繁的操作是进行数据查询。一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费。为了提高检索数据的能力,数据库引入了索引机制。  2.有关“索引”的比喻  从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便、快捷。  ...

LEWENCAI560618的博客 156

【Verilog模块例化全解析:从入门到精通】

本文详细解析了Verilog模块例化的核心概念与方法。主要内容包括: 模块定义与例化的基本概念,强调模块例化会生成独立硬件电路; 两种端口连接方式:位置映射(按顺序连接)和名称映射(按端口名连接),推荐使用名称映射提高可读性; 参数化例化方法,通过parameter实现可配置模块设计; 多层模块嵌套的实战应用,展示复杂设计的层次化实现。 文章通过2位加法器等代码示例,对比分析了不同例化方式的优缺点,为硬件设计中的模块复用提供了实用指导。重点推荐名称映射和参数化设计方法,以提高代码可维护性和设计灵活性。

m0_58476824的博客 1328

应广单片机 按键点灯 PMS171B GPIO LED

我也是第一次使用这款单片机,参考网友的资料,写个最近简单的demo 测试用例 #include "extern.h" /*端口定义*/ BIT KEY : PA.0; BIT SW : PA.4; /*相应于main函数*/ void FPPA0 (void) { /*单片机内部RC震动时钟为 IHRC默认为16M,因此,IHRC/2=8M,系统时钟为8M*/ .ADJUST_IC...

大江的专栏 1002

mysql数据库索引的使用及介绍

索引是快速搜索的关键。MySQL索引的建立对于mysql的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  );   我们随机向里面插入了10000条记录...

wyf_ylrf的博客 3347

【笔试真题】- 华子-2025.12.17-研发岗

难度:中等难度:中等偏难难度:中等K小姐是一名服务器运维工程师,她负责监控公司服务器的访问日志。服务器采用指数退避策略来优化访问频率,每次重试的时间间隔会按照某种规律增长。经过一段时间的监控,K小姐记录了 nnn 个访问时间点,第 iii 个时间点的值为 a[i]a[i]a[i](可能有重复)。现在,她想分析这些访问时间点是否符合某种特定的模式。具体来说,对于给定的参数对 (x,y)(x, y)(x,y),她想知道:有多少个访问时间点 a[i]a[i]a[i] 满足 a[i]=xK+ya[i] = x^K

春秋招笔试突围 187

MySQL数据库索引的系统化应用讲解

本文详细介绍了数据库索引的核心类型、创建与使用规范、性能优化策略以及高级应用与实战案例。索引类型包括主键索引、唯一索引、普通索引、组合索引、全文索引和空间索引,每种索引都有其特定的应用场景。创建索引时需遵循选择性优先、覆盖索引和前缀优化等设计原则,以提升查询性能。性能优化策略包括索引选择性分析、避免冗余索引和定期维护。常见问题如索引失效和写性能下降,可通过重写查询条件、批量操作或使用监控工具解决。高级应用如自适应哈希索引和索引下推,可进一步优化查询效率。实战案例展示了如何通过合理应用索引显著提升查询性能。

半青年的博客 1121

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

mysql数据库索引运用_浅谈MySQL数据库索引应用

1.对于MYSQL索引好处是什么?我相信了解过索引的同学都知道,好的索引可以帮助我们很大提高QUERY的执行效率 以及服务器IO能力。在数据库中个表的某个字段创建索引,所带来的最大益处就是将该字段作为检索条件的 时候,极大的提高检索效率,加快扫描时间,降低检索过程中所需要读取的数据量。但是索引所给我们带来的好处难道仅仅是提高数据的检索效率吗?答案是否定的。NO索引还有一个VERY GOOD的好处就...

weixin_39985286的博客 98

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据库应用——MySQL事务和索引

事务和索引什么是事务执行事务模拟事务索引索引的分类测试索引创建测试表创建索引索引原则 什么是事务 要么都成功,要么都失败 就是将一组SQL放在一个批次中去执行 事务原则:ACID 原则 原子性,一致性,隔离性,持久性 脏读 幻读 博客参考连接:大佬写的 原子性(Atomicity) 要么都成功,要么都失败 一致性(Consistency) 事务前后的数据完整性要保证一致 隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,

Cantevenl的博客 4865

说说Mysql数据库索引的应用

答:MySQL数据库索引分为四种,普通索引,唯一索引,主键索引和全文索引。 普通索引可重复,用于过滤数据,唯一索引不能重复, 主键索引是行唯一标识,不能为空,检索特定数据,较唯一索引更常用。 全文索引效率低,常用于全文内容索引。 ...

ljc1999的博客 165

数据库应用——MySQL索引视图与事务

前言:在企业信息话的过程中,数据库中表的数据量越来越大,性能会急剧下降,创建索引对保持良好的性能非常关键。索引是对查询性能优化最有效的手段,能够轻易将查询性能提高几个数量级。 执行数据库操作时,有时需要多个操作表示一个操作流程,要么都执行,要么都不执行,这就是数据库的事务。 文章目录一、数据库索引1.索引的概念2.索引的作用3.索引的分类4.创建索引的原则依据5.创建及查看索引1)创建普通索引2)...

weixin_45724795的博客 805

mysql数据库索引_MySQL数据库应用总结(八)—MySQL数据库索引的操作

长文预警,多图预警...------------------------------------------------------------------------------SQL语法预览:创建表的时候创建索引:【create table 表名(字段名称 数据类型,unique|fulltext|spatial index 索引名(索引字段名(索引长度)|…));】在已有表上增加索引:【al...

weixin_42311672的博客 361

数据库应用:MySQL索引

索引分为:① 普通索引 :针对所有字段,没有特殊的需求/规则② 唯一索引 : 针对唯一性的字段,仅允许出现一次空值③ 组合索引 (多列/多字段组合形式的索引) 从左往右④ 全文索引(varchar char text)⑤ 主键索引 :针对唯一性字段、且不可为空,同时一张表只允许包含一个主键索引创建索引:① 在创建表的时候,直接指定index② alter修改表结构的时候,进行add 添加index③ 直接创建索引indexPS:主键索引——》直接创建主键即可。

cronaldo91的博客 266

全文索引:Mysql数据库下的应用

全文索引 使用 应用 文本搜索 搜索引擎

weixin_37674052的博客 610

MySQL的索引以及数据库索引应用

数据库引入了索引 用户对数据库最频繁的操作是进行数据查询。一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费。为了提高检索数据的能力,数据库引入了索引机制。 有关“索引”的比喻 从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便、快捷。 数据库索引实际...

iteye_10679的博客 133

mysql 索引表的应用_MySQL数据库应用(7)表索引

一、为表的字段创建索引索引就像书的目录一样,如果在字段上建立了索引,那么以索引列为查询条件时可以加快查询速度,这是mysql优化的重要内容之一,后面课程会详细讲到1、创建主键索引查询数据库,按主键查询时最快的,每个表只能有一个主键列,但是可以有多个普通索引列。主键列要求列的所有内容必须唯一,而索引列不要求内容必须唯一。、主键就类似我们在学校学习时的学号一样,班级内是唯一的,整个表的每一条记录的主键...

weixin_29848477的博客 255

数据库应用(mysql)索引

索引

qq_71139242的博客 1317

MySQL数据库之索引的应用

前面几篇文章详细介绍了MySQL数据库的DML,DDL,DCL,DQL常用操作,本篇文章将介绍MySQL中一块对于开发和维护都比较重要的内容--MySQL索引的应用! 1、索引的作用(1)如果索引为唯一索引,可以保证数据库中每一行数据的唯一性(2)索引如果创建的合适,会大幅度提高数据库的查询性能,这也是索引最大的作用(3)索引能够使得在查...

weixin_33857679的博客 145
下一篇: 权限管理控制与RBAC模型
Array*
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值