iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MYSQL(一)数据库索引类型,索引优点
  • 907
分享到

MYSQL(一)数据库索引类型,索引优点

2024-04-02 19:04:59 907人浏览 独家记忆
摘要

索引在Mysql中也叫做键(key),是存储引擎用于快速找到记录的一种数据结构。索引结构类型(常见有两种):1. B-Tree索引大多数mysql引擎都支持这种索引;  &nb

索引Mysql中也叫做键(key),是存储引擎用于快速找到记录的一种数据结构

索引结构类型(常见有两种):

1. B-Tree索引

大多数mysql引擎都支持这种索引;

        1.B-Tree通常意味着所有的值都是按顺序存储的,

        2.并且每一个叶子页到根的距离相同;

存储引擎不需要进行全表扫描来获取需要的数据,取而代之是从索引的根节点开始进行搜索;

适用于:

A. 全键值查找(全值匹配)

B. 键值范围(若是有多列的合并索引,需要精确匹配某一列并范围匹配另一列)

C. 键前缀查找

D. 按顺序查找(order by)

限制:

A. 如果不是按照索引的最左列开始查找,则无法使用索引

B. 不能跳过索引中的列

C. 如果查询中有某个列的范围查询,其右边的所有列都无法使用索引优化查询

2. 哈希索引

在mysql中,只有memory引擎显式支持哈希索引;基于哈希表实现,只有精确匹配索引所有列的查询才有效;对于每一行数据,存储引擎会对所有的索引列计算一个哈希码,不同的键值行计算出的哈希码不一样,哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针;(hash索引结构:hash值:指针)

优势:

查找速度非常快

限制:

A. 无法用于排序

B. 不支持部分索引列匹配查找

C. 只支持等值比较查询

存储引擎不支持哈希索引时,可以建立自定义哈希:

如:建表pseudohash:id,url,url_crc;

建立触发器:insert数据时 set new.url_crc = crc32(new.url);

Update数据时 set new.url_crc = crc32(new.url);

查找:select url , url_crc from pseudohash where url_crc = crc32(“www.baidu.com”) and url = “www.baidu.com”;

在where语句中带人hash值和对应列值。



索引功能类型:

1.普通索引(INDEX )

    CREATE INDEX index_name ON table_name (column_list);

2.唯一索引(UNIQUE INDEX)

    mysql数据库索引列的值必须唯一,但允许有空置。如果是组合索引,列值的组合必须唯一。

    CREATE UNIQUE INDEX index_name ON table_name (column_list)

3.主键索引(PRIMARY KEY)

    是一种特殊的唯一索引,不允许有空置,一般在建表时创建

    CREATE TABLE table_name ( 

     ID INT NOT NULL, 

     [column] VARCHAR(16) NOT NULL, 

    PRIMARY KEY(ID)   

     );  

4.全文索引:(FULLTEXT)只可以用在MyISAM引擎

    对大数据文本进行索引,在建立的索引中对要查找的单词进行搜索,定位哪些文本数据包括要搜索的单词。

    1,建立索引   2,在索引中搜索定位

    //针对content做了全文索引:

    CREATE TABLE `table` (

    `id` int(11) NOT NULL AUTO_INCREMENT ,

    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,

    PRIMARY KEY (`id`),

    FULLTEXT (content) );

    查找时:

    SELECT * FROM article WHERE MATCH( content) AGAINST('想查询的字符串')



索引的优点:

1. 可以让服务器快速定位到表的指定位置,大大减少了服务器需要扫描的数据量

2. 最常见的b-tree索引按照顺序存储数据,可以用来做order by和group by,帮助服务器避免排序和临时表,将随机I/O变为顺序I/O

3. 因为索引中存储了实际的列值,某些查询只需要使用索引就能完成全部查询


索引优化

      1. 前缀索引

         问题:有时候索引需要存储很长的字符串,会让索引变得大且慢

         解决:1. hash索引 2. 前缀索引

         索引的选择性:不重复的索引值 / 数据表的记录总数,数值越高性能越好;

                            唯一索引的选择性是1,性能是最好的

          计算适合的前缀长度,使前缀的选择性接近于完整列的选择性。Mysql无法使用前缀索引做order by和group by,也无法使用前缀索引做覆盖扫描;

       2. 选择合适的索引列顺序

          将选择性最高的列放在索引最前列


您可能感兴趣的文档:

--结束END--

本文标题: MYSQL(一)数据库索引类型,索引优点

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

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

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

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

下载Word文档
猜你喜欢
  • MYSQL(一)数据库索引类型,索引优点
    索引在mysql中也叫做键(key),是存储引擎用于快速找到记录的一种数据结构。索引结构类型(常见有两种):1. B-Tree索引大多数mysql引擎都支持这种索引;  &nb...
    99+
    2022-10-18
  • mysql数据库的索引类型
    索引类型介绍:主键索引primary key() 要求关键字不能重复,也不能为null,同时增加主键约束 主键索引定义时,不能命名唯一索引unique index() 要求关键字不能重复,同时增加唯一约束普...
    99+
    2022-10-18
  • mysql数据库索引类型有哪些
    这篇文章主要介绍mysql数据库索引类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文将着重描述masql数据库索引的四种类型,数据库索引怎么建立?在WHERE和J...
    99+
    2022-10-18
  • Mysql 数据库结构及索引类型
    目录前言数据库索引的数据结构聚集索引辅助索引索引管理联合索引覆盖索引总结前言 数据库索引是mysql数据库中重要的组成部分,是数据库查询数据速度提升的关键,本文将介绍数据库索引的一些...
    99+
    2022-11-13
  • MySQL数据库唯一索引
    引言:什么是索引 创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度。创建索引有3种方式,分别是1.创建表的时候创建索引、2.在已经存在的表上创建索引和使用3.ALTER TABLE语句来创建索引。 本文福利,莬费领...
    99+
    2023-09-06
    数据库 mysql sql qt教程 qt开发
  • 数据库索引的类型和特点有哪些
    本篇内容介绍了“数据库索引的类型和特点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!有效优化VPS性...
    99+
    2022-10-18
  • MySQL数据库引擎和索引
    一、MySQL 数据库引擎:1. Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的...
    99+
    2022-10-18
  • mysql数据库的索引
    day04  MySQL数据库的索引一、索引概述:    索引是由一张表中的某个列或多列组成,而创建索引的目的是为了更优化管理我们的数据库表,提升我们查询使...
    99+
    2022-10-18
  • mysql数据库中的索引类型和原理解读
    目录索引初识一个简单的对比测试mysql索引的概念MySQL索引的类型1. 普通索引2. 唯一索引3. 全文索引(FULLTEXT)4. 单列索引、多列索引5. 组合索引(最左前缀)MySQL索引的优化建立索引的优缺点总...
    99+
    2023-02-16
    mysql数据库 mysql索引类型 mysql索引原理
  • PostgreSQL 10数据类型与索引
    PostgreSQL 10常用的索引类型有btree,hash,gin,gist,spgist,brin六种,btree和hash是最长用的,基本所有数据类型都支持,以下对gin,gist,spgist,b...
    99+
    2022-10-18
  • Oracle数据库中有哪些索引类型
    今天就跟大家聊聊有关Oracle数据库中有哪些索引类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、B-Tree索引三大特点:高度较低、存储列值...
    99+
    2022-10-18
  • mysql索引的类型、优缺点、常用操作命令
            现在来介绍了数据库索引,及其优、缺点。针对MySQL索引的特点、应用进行了详细的描 述。分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查...
    99+
    2022-10-18
  • mysql的索引类型介绍
    这期内容当中小编将会给大家带来有关mysql的索引类型介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Mysql目前主要有以下几种索引类型:Full-text,HASH...
    99+
    2022-10-18
  • MySQL索引的各种类型
    什么是索引? 索引是数据库存储引擎用于快速查找到指定数据的一种数据结构。 可以用新华字典做类比:如果新华字典中对每个字的详细解释是数据库中表的记录,那么按部首或拼音等排序的目录就是索引,使用它可以让我们快速查找的某一...
    99+
    2022-05-30
    MySQL 索引 MySQL 索引类型
  • mysql索引类型有哪些
    这篇“mysql索引类型有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql索引...
    99+
    2022-10-19
  • mysql索引类型有哪些?
    在Mysql数据库当中,我们经常会谈到Sql语句,当然也会谈到索引优化,那么在数据库当中有哪些索引类型呢,博主在这里进行分享,希望对大家能有所帮助。 目录 1、B-Tree索引: 2、Hash索引: 3、Full-text索引: 4、...
    99+
    2023-09-07
    数据库
  • mysql数据库索引用处
    本文主要给大家介绍mysql数据库索引用处,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql数据库索引用处吧。    &n...
    99+
    2022-10-18
  • MySQL数据库的索引有什么特点
    本篇内容主要讲解“MySQL数据库的索引有什么特点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的索引有什么特点”吧!索引是加速表内容访问的主要...
    99+
    2022-10-18
  • MySQL 覆盖索引的优点
    一个通常的建议是为WHERE条件创建索引,但这其实是片面的。索引应当为全部查询设计,而不仅仅是WHERE条件。索引确实能有效地查找数据行,但MySQL也能够使用索引获取列数据,这样根本不需要去读取一行...
    99+
    2022-05-30
    MySQL 覆盖索引 MySQL 覆盖索引优点
  • mysql索引有哪些优点
    本文小编为大家详细介绍“mysql索引有哪些优点”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql索引有哪些优点”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作