广告
返回顶部
首页 > 资讯 > 精选 >sql索引使用规则是什么
  • 718
分享到

sql索引使用规则是什么

2023-07-05 21:07:17 718人浏览 薄情痞子
摘要

这篇“sql索引使用规则是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“sql索引使用规则是什么”文章吧。1.索引概述1

这篇“sql索引使用规则是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“sql索引使用规则是什么”文章吧。

    1.索引概述

    1.1索引介绍

    索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构 上实现高级查找算法,这种数据结构就是索引。

    1.2索引的优劣势

    sql索引使用规则是什么

    2.索引结构

    2.1 概述

    Mysql的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包含以下几种:如下图所示:

    sql索引使用规则是什么

    上述是mysql中所支持的所有的索引结构,不同的存储引擎对于索引结构的支持情况如下图所示。平常所说的索引,如果没有特别指明,都是指B+树结构组织的索引。

    sql索引使用规则是什么

    在 MySQL 5.5 之后, InnoDB是默认的 MySQL 存储引擎,InnoDB引擎的默认索引是B+tree。 MySQL 索引数据结构对经典的 B+Tree 进行了优化。在原 B+Tree的基础上,增加一个指向相邻叶子节点 的链表指针,就形成了带有顺序指针的B+Tree,如下图所示。这提高区间访问的性能,利于排序。并且InnoDB 中具有自适应 hash 功能, hash 索引是 InnoDB存储引擎根据 B+Tree 索引在指定条件下自动构建的。

    sql索引使用规则是什么

    3. 索引分类

    3.1 索引分类

    在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。如下图所示。

    sql索引使用规则是什么

    3.2 聚集索引&二级索引

    而在在 InnoDB 存储引擎中,根据索引的存储形式,又可以分为以下两种:

    sql索引使用规则是什么

    聚集索引选取规则 :

    如果存在主键,主键索引就是聚集索引。

    如果不存在主键,将使用第一个唯一( UNIQUE )索引作为聚集索引。

    3。如果表没有主键,或没有合适的唯一索引,则 InnoDB 会自动生成一个 rowid 作为隐藏的聚集索 引。

    聚集索引和二级索引的具体结构如下图所示。 聚集索引的叶子节点下挂的是这一行的数据 , 二级索引的叶子节点下挂的是该字段值对应的主键值。

    sql索引使用规则是什么

    执 行如下的 SQL语句时,具体的查找过程如下所示。

    具体过程如下:

    由于是根据 name 字段进行查询,所以先根据 name='Arm' 到 name 字段的二级索引中进行匹配查 找。但是在二级索引中只能查找到 Arm 对应的主键值 10 。

    由于查询返回的数据是 * ,所以此时,还需要根据主键值 10 ,到聚集索引中查找 10 对应的记录,最 终找到10 对应的行 row 。

    3  。 最终拿到这一行的数据,直接返回即可。 其中 回表查询是指 ,这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取数据的方式,就称之为回表查询。

    sql索引使用规则是什么

    索引使用

    4.1索引语法

    创建索引

    CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (index_col_name,... ) ;

    查看索引

    SHOW INDEX FROM table_name ;

    删除索引

    DROP INDEX index_name ON table_name ;

    4.2创建演示

    首先创建一个名为tb_user的表并插入一些数据

    create table tb_user(id int primary key auto_increment comment '主键',name varchar(50) not null comment '用户名',phone varchar(11) not null comment '手机号',email varchar(100) comment '邮箱',profession varchar(11) comment '专业',age tinyint unsigned comment '年龄',gender char(1) comment '性别 , 1: 男, 2: 女',status char(1) comment '状态',createtime datetime comment '创建时间') comment '系统用户表';INSERT INTO tb_user (name, phone, email, profession, age, gender, status,createtime) VALUES ('吕布', '17799990000', 'lvbu666@163.com', '软件工程', 23, '1','6', '2001-02-02 00:00:00');INSERT INTO tb_user (name, phone, email, profession, age, gender, status,createtime) VALUES ('曹操', '17799990001', 'caocao666@qq.com', '通讯工程', 33,'1', '0', '2001-03-05 00:00:00');INSERT INTO tb_user (name, phone, email, profession, age, gender, status,createtime) VALUES ('赵云', '17799990002', '17799990@139.com', '英语', 34, '1','2', '2002-03-02 00:00:00');INSERT INTO tb_user (name, phone, email, profession, age, gender, status,createtime) VALUES ('孙悟空', '17799990003', '17799990@sina.com', '工程造价', 54,'1', '0', '2001-07-02 00:00:00');

    插入如下的数据

    sql索引使用规则是什么

    如果需求是 ,name字段为姓名字段,该字段的值可能会重复,为该字段创建索引。

    则该创建索引的语法为

    CREATE INDEX idx_user_name ON tb_user(name);

    phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。 则该创建索引的语法为

    CREATE UNIQUE INDEX idx_user_phone ON tb_user(phone);

    为profession、age、status创建联合索引。

    CREATE INDEX idx_user_pro_age_sta ON tb_user(profession,age,status);

    为email建立合适的索引来提升查询效率

    CREATE INDEX idx_email ON tb_user(email);

    查看tb_user表的所有的索引数据

    show index from tb_user;

    删除索引如删除email的索引

    DROP INDEX idx_email ON tb_user ;

    5.索引法则

    1.最左前缀法则

    如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始, 并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效( 后面的字段索引失效 ) 。

    范围查询

    联合索引中,出现范围查询 (>,<),范围查询右侧的列索引失效。所以,在业务允许的情况下,尽可能的使用类似于 >= 或 <= 这类的范围查询,而避免使用 > 或 <

    索引失效情况

    1.索引列运算

    不要在索引列上进行运算操作, 索引将失效,如进行函数运算操作。

    字符串不加引号

    字符串类型字段使用时,不加引号,索引将失效。

    3.  模糊查询

    如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

    4 .or 连接条件

    用 or 分割开的条件, 如果 or 前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会 被用到。

    5 . 数据分布影响

    如果 MySQL 评估使用索引比全表更慢,则不使用索引。但可以通过sql提示来进行改变。

    6.SQL提示

    SQL 提示,是优化数据库的一个重要手段,简单来说,就是在 SQL 语句中加入一些人为的提示来达到优 化操作的目的。

    use index : 建议 MySQL 使用哪一个索引完成此次查询(仅仅是建议, mysql 内部还会再次进 行评估)。使用代码示例如下。

    explain select * from tb_user use index(idx_user_pro) where profession = '软件工程';

    ignore index : 忽略指定的索引。使用代码示例如下。

    explain select * from tb_user ignore index(idx_user_pro) where profession = '软件工程';

    force index : 强制使用索引。使用代码示例如下。

    explain select * from tb_user force index(idx_user_pro) where profession = '软件工程';

    以上就是关于“sql索引使用规则是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: sql索引使用规则是什么

    本文链接: https://www.lsjlt.com/news/355252.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • sql索引使用规则是什么
      这篇“sql索引使用规则是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“sql索引使用规则是什么”文章吧。1.索引概述1...
      99+
      2023-07-05
    • sql索引的介绍及使用规则
      1.索引概述 1.1索引介绍 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构 上实现高级查找算...
      99+
      2023-09-01
      sql 数据库 mysql
    • mysql索引命中规则是什么?
      首先我们来了解一下最左匹配原则,如下:1、先定位该sql的查询条件,有哪些,那些是等值的,那些是范围的条件。2、等值的条件去命中索引最左边的一个字段,然后依次从左往右命中,范围的放在最后。分析讲解 1、my...
      99+
      2022-10-18
    • MySQL索引优化规则是什么
      这篇文章将为大家详细讲解有关MySQL索引优化规则是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。今天mysql教程栏目为大家介绍MySQL的索引优化规则。前言索引的...
      99+
      2022-10-18
    • sql索引的介绍以及使用规则详析
      目录1.索引概述1.1索引介绍1.2索引的优劣势2.索引结构2.1 概述3. 索引分类3.1 索引分类3.2 聚集索引&二级索引索引使用4.1索引语法4.2创建演示5.索引法则总结1.索引概述 1.1索...
      99+
      2023-04-03
      sql索引用法 sql中的索引 sql索引使用规则是什么
    • 索引使用规则及索引失效情况
      索引使用规则 联合索引索引失效情况 联合索引 1.最左前缀法则 如果索引使用了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列,如果...
      99+
      2023-09-05
      mysql
    • mysql联合索引的使用规则
      联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支...
      99+
      2022-11-12
    • drools规则引擎是什么
      推荐教程:java教程Drools简介  Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已...
      99+
      2018-04-29
      java教程 drools java
    • java中的规则引擎是什么
      今天就跟大家聊聊有关java中的规则引擎是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3....
      99+
      2023-06-14
    • MySQL中索引基础知识及使用规则
      目录 一.InnoDB索引 二.B+树 三.聚集索引和辅助索引 四.索引实战 五.索引操作与规则 重建索引 索引覆盖 最左前缀原则 索引下推 用索引和用索引快速定位却别 六.普通索引和唯一索引如何选择 前提 普通索引和唯一...
      99+
      2020-03-29
      MySQL中索引基础知识及使用规则
    • Mysql中复合索引使用规则有哪些
      这篇文章主要介绍了Mysql中复合索引使用规则有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 联合索引验证:从左向右发挥作用索引:(...
      99+
      2022-10-18
    • SQL中like的语法规则是什么
      在SQL中,LIKE是用于在WHERE子句中进行模糊搜索的操作符。它的语法规则如下:SELECT column_na...
      99+
      2023-09-29
      SQL
    • sql标识符命名规则是什么
      SQL标识符命名规则如下:1. 标识符可以包含字母、数字和下划线(_)。2. 标识符必须以字母或下划线开头。3. 标识符不能以数字开...
      99+
      2023-08-08
      sql
    • SQL Server子查询的规则是什么
      这篇文章主要介绍“SQL Server子查询的规则是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SQL Server子查询的规则是什么”文...
      99+
      2023-04-21
      sql server
    • sql字符串排序规则是什么
      在SQL中,字符串排序是根据字符的编码顺序进行的。字符串排序规则如下:1. 首先按照字符串的第一个字符的编码进行排序。例如,'a'会...
      99+
      2023-09-26
      sql
    • SQL Server函数语法规则是什么
      SQL Server函数的语法规则如下:1. 函数名称必须是唯一的,并且在同一个数据库中不能重复使用。2. 函数名称必须以字母开头,...
      99+
      2023-09-22
      SQL Server
    • MySQL索引创建原则是什么
      本篇内容介绍了“MySQL索引创建原则是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2023-05-25
      mysql
    • SQL Server索引有什么用
      这篇文章给大家分享的是有关SQL Server索引有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。索引的概念索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准...
      99+
      2022-10-18
    • CSS样式使用规则是什么
      这篇文章给大家分享的是有关CSS样式使用规则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一:CSS的描述 1、CSS通常称为CSS样式或层叠样式表,主要用于设置HT...
      99+
      2022-10-19
    • mysql索引建立的原则是什么
      小编给大家分享一下mysql索引建立的原则是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!尽量选择区分度高的列来建立索引。频繁查询列适合建立索引。遇到联合索引时,想想最左边的匹配原则。like模糊查询时,%在前面时才会...
      99+
      2023-06-25
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作