1.什么是索引

索引用于快速找出在某个列中有一特定值的行。如果不使用索引,需要遍历整张表,表越大查询耗时越大;

MySQL中的索引的存储类型有两种:BTREE、HASH。具体实现机制参照另一篇博客;

2.索引的优缺点分析和使用原则

 优点:

  • 任意字段可以设置索引
  • 索引可以大大加快查询

 缺点:

  • 创建、维护索引需要额外耗时,并且耗时随数据量明显增加
  • 索引需要占据空间,导致提前达到数据最大上线值
  • 数据增、删、改需要维护索引,维护速度降低

使用原则:

   1. 更新频繁的表应该避免过度索引,对查询频繁的字段应该创建索引;

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

3. 不同值少的列上(字段上)不要建立索引,例如学生表的"性别"字段上只有男,女两个不同值,无需设置索引;

3.索引分类

   索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引;

MyISAM和InnoDB存储引擎:只支持BTREE索引

MEMORY/HEAP存储引擎:支持HASH和BTREE索引

索引分类 定义 说明
单列索引

普通索引:字段没限制,允许在定义索引列中插入重复值、空值;

唯一索引:索引列中的值必须是唯一的,但允许为空值;

主键索引:索引列值必须唯一,不允许为空

一个索引包含单列,但一张表可以有多个索引
组合索引 表中的多个字段组合上创建的索引 使用组合索引时遵循最左前缀集合
全文索引 在一堆数据中,通过某个关键字等,就能找到该字段所属的记录行 MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引
空间索引 空间索引是对空间数据类型的字段建立的索引, MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON

参考:

https://www.cnblogs.com/whgk/p/6179612.html

https://blog.csdn.net/waeceo/article/details/78702584

MySql索引基本的更多相关文章

  1. 深入MySQL索引

    MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...

  2. MySQL 索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...

  3. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  4. MySQL索引原理及慢查询优化

    原文:http://tech.meituan.com/mysql-index.html 一个慢查询引发的思考 select count(*) from task where status=2 and ...

  5. 【转】MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  6. [转]MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  7. MySQL索引类型总结和使用技巧以及注意事项

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable ...

  8. MySQL索引背后的数据结构及算法原理【转】

    本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...

  9. mysql索引总结----mysql 索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  10. Mysql 索引实现原理. 聚集索引, 非聚集索引

    Mysql索引实现: B-tree,B是balance,一般用于数据库的索引.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.而B+tree是B-tree的一个变种,My ...

随机推荐

  1. spring boot 开发环境搭建(Eclipse)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  2. mark LINUX_6.8 python_2.6.6 setup版本升级 python 2.7.9 安装 pip 临时使用国内镜像源库 指定模块版本 删除指定模块

    简单但却又经常需要使用  网上  贴子也很多  也经常用  所以 做个mark 吧: 1首先下载python2.7.9 源tar包 源码安装 可利用linux自带下载工具wget下载,如下所示:   ...

  3. 【LeetCode】 240. 搜索二维矩阵 II

    题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 mat ...

  4. 51nod 1103:N的倍数 抽屉原理

    1103 N的倍数 题目来源: Ural 1302 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 一个长度为N的数组A,从A中选出若干个数,使得这 ...

  5. List列表删除值为指定字段

    需要处理一个场景,当值为某一个固定值或者为空的时候,删除列表中的这个值. ;i<list.size();i++){ if(list.get(i).equals("del")) ...

  6. 2.9 初识 jetpack

    Android Jetpack 组件 Android Jetpack 组件是库的集合 这些库是为协同工作而构建的,也可以单独采用,同时利用 Kotlin 语言功能帮助提高工作效率.可全部使用,也可混合 ...

  7. nginx报错

    1. nginx报错 nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid&q ...

  8. RecyclerView+FloatingActionButton应用

    一.效果图 二.实现步骤 1.XML布局-添加依赖 <LinearLayout android:id="@+id/layout" android:layout_width=& ...

  9. Codeforces 405E DFS

    这个题目要求把一个无向连通图里面的所有边,分成 两个一对,只能出现一次,而且一对边必须是连在一起的,点可以复用  但边不可复用 可解条件很易得,因为图是连通的,只要边数为偶数即可. 一开始我借着做欧拉 ...

  10. 冒泡排序_python

    def popdata(ls): for i in range(len(ls)): for j in range(i+1,len(ls)): if ls[i]>ls[j]: # tmp=ls[i ...