前言:

关于MySql索引数据结构和实现原理的讲解值得阅读一下:

实现原理:https://www.cnblogs.com/songwenjie/p/9415016.htm

索引数据结构:https://www.cnblogs.com/songwenjie/p/9414960.html

1.什么是索引:

  MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。

  提取句子的主干,就可以得到索引的本质:索引就是数据结构。

2.索引的分类

在一个表中,主键索引只能有一个,而唯一索引可以有多个

  1. 主键索引(PRIMARY KEY)

    特点:唯一标识,不可重复。只能有一列作为主键,且主键不可为Null。

  1. 唯一索引(UNIQUE KEY)

    特点:避免重复的列出现,唯一索引可以重复,多个列都可以标识为 唯一索引。

  1. 常规索引(KEY/INDEX)

    特点:默认的,index。key关键字来设置

  1. 全文索引(FullText)

    特点:在特定的数据库引擎下才有,MyISAM,可以快速定位数据

3.MySQL索引创建与使用(基础语法)

  参考博客:https://blog.csdn.net/justry_deng/article/details/81458470

  索引一旦创建则不能修改,如果要修改索引,只能删除重建。可以使用DROP INDEX index_name ON table_name; 删除索引。

4.索引优势和劣势

  优势:1.提高数据的检索效率,降低数据库IO成本。  2.降低数据排序的成本,降低CPU的消耗。

  劣势:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

5.索引使用原则

  1.不要对进行变动的数据加索引    比如:插入\删除\更新

  2.小数据量的表不需要加索引

  3.索引一般加在常用来查询的字段上!

  4.索引不是越多越好

MySQL—索引(Index)的更多相关文章

  1. MySQL 索引 INDEX

    索引用于快速找出在某列中有特定值的行. 不使用索引,MySQL必须从第一条记录开始读完整个表,直到找到相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一 ...

  2. MySQL索引的Index method中btree和hash的优缺点

    MySQL索引的Index method中btree和hash的区别 在MySQL中,大多数索引(如 PRIMARY KEY,UNIQUE,INDEX和FULLTEXT)都是在BTREE中存储,但使用 ...

  3. mysql force index() 强制索引的使用

    mysql force index() 强制索引的使用 之前跑了一个SQL,由于其中一个表的数据量比较大,而在条件中有破坏索引或使用了很多其他索引,就会使得sql跑的非常慢... 那我们怎么解决呢? ...

  4. MySQL force Index 强制索引概述

    以下的文章主要介绍的是MySQL force Index  强制索引,以及其他的强制操作,其优先操作的具体操作步骤如下:我们以MySQL中常用的hint来进行详细的解析,如果你是经常使用Oracle的 ...

  5. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  6. MySQL索引与Index Condition Pushdown

    实际上,这个页面所讲述的是在MariaDB 5.3.3(MySQL是在5.6)开始引入的一种叫做Index Condition Pushdown(以下简称ICP)的查询优化方式.由于本身不是一个层面的 ...

  7. MySQL索引与Index Condition Pushdown(employees示例)

    实验 先从一个简单的实验开始直观认识ICP的作用. 安装数据库 首先需要安装一个支持ICP的MariaDB或MySQL数据库.我使用的是MariaDB 5.5.34,如果是使用MySQL则需要5.6版 ...

  8. Mysql索引详解及优化(key和index区别)

    MySQL索引的概念    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库 ...

  9. MySQL索引与Index Condition Pushdown(二)

    实验 先从一个简单的实验开始直观认识ICP的作用. 安装数据库 首先需要安装一个支持ICP的MariaDB或MySQL数据库.我使用的是MariaDB 5.5.34,如果是使用MySQL则需要5.6版 ...

  10. MySQL InnoDB 索引 (INDEX) 页结构

    MySQL InnoDB 索引 (INDEX) 页结构 InnoDB 为了不同的目的而设计了不同类型的页,我们把用于存放记录的页叫做索引页 索引页内容 索引页分为以下部分: File Header:表 ...

随机推荐

  1. Solution -「UOJ #87」mx 的仙人掌

    \(\mathcal{Description}\)   Link.   给出含 \(n\) 个结点 \(m\) 条边的仙人掌图.\(q\) 次询问,每次询问给出一个点集 \(S\),求 \(S\) 内 ...

  2. Solution -「LOCAL」舟游

    \(\mathcal{Description}\)   \(n\) 中卡牌,每种三张.对于一次 \(m\) 连抽,前 \(m-1\) 次抽到第 \(i\) 种的概率是 \(p_i\),第 \(m\) ...

  3. Solution -「CF 1372E」Omkar and Last Floor

    \(\mathcal{Description}\)   Link.   给定一个 \(n \times m\) 的矩阵,每行被划分为若干段,你可以钦定每段中恰好一个位置为 \(1\),其余位置为 \( ...

  4. c++ StrVec等效vector(string)的类

    c++ StrVec等效vector<string>的类 知识点 静态成员变量要在类外定义和初始化 allocator类是使用和uninitialized_copy的配合使用,实现stri ...

  5. 一、Mybatis初体验

    本文章中所有操作均在idea2019中实现. 快速入门步骤: 1)添加Mybatis包 2)创建实体类User(对应数据库操作提前已准备,参考随笔tip1) 3)编写映射文件UserMapper.xm ...

  6. python-利用json模块处理json数据几个函数总结

    1.前言 json是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写. 前端和后端进行数据交互,其实就是JS和Python进行数据交互. 接口间或者前后端间的语言不一致,不同 ...

  7. Windows原理深入学习系列-强制完整性控制

    欢迎关注微信公众号:[信安成长计划] 0x00 目录 0x01 介绍 0x02 完整性等级 0x03 文件读取测试 0x04 进程注入测试 0x05 原理分析 Win10_x64_20H2 0x06 ...

  8. RENIX报文两个字段嵌套变化——网络测试仪实操

    RENIX软件如何实现报文中两个字段嵌套变化,以下为您实操讲解详细步骤. 1.打开Renix软件,连接机框并预约测试端口: 2.创建一条RAW流量(Binding流量也可以,这里用RAW流做例子) 3 ...

  9. excel仪表盘制作,商业智能仪表盘的作用

    ​商业仪表盘被称为管理驾驶舱的重要组成部分,无论是管理决策者,还是企业业务流程中的普通员工,都可以利用它来展示分析的结果,让决策更加快速准确,更快地推动业务流程的进展,提高工作效率. 一个明确地了解自 ...

  10. Oracle之查询排序

    SQL排序查询 DESC降序.ASC升序(默认是升序) /* 语法结构: SELECT * | 列名1[,列名2...] | 表达式 FROM 表名 [WHERE 限定条件] ORDER BY 列名1 ...