首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL索引类型

转载自http://www.cnblogs.com/luyucheng/p/6289714.html 一、简介 MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引...,表示索引的长度,只有字符串类型的字段才能指定索引长度 6.asc或desc指定升序或降序的索引存储 三、索引类型 1.普通索引 是最基本的索引,它没有任何限制。...(4)删除索引 DROP INDEX index_name ON table 2.唯一索引 与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。...因为更新表时,不仅要保存数据,还要保存一下索引文件。 2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引索引文件的会增长很快。...短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。 3.索引列排序 查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。

66210

MySQL索引类型

1.索引类型 1.1 普通索引 NORMAL: 是最基本的索引,它没有任何限制。 1.2 唯一索引 SPATIAL: 与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。...如果是组合索引,则列值的组合必须唯一。 1.3 主键索引: 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。...一般是在建表的时候同时创建主键索引: 1.4 组合索引: 指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。...使用组合索引时遵循最左前缀集合 1.5 全文索引 主要用来查找文本中的关键字,而不是直接与索引中的值相比较。...2.2 建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引索引文件的会增长很快。

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySql索引类型

    Mysql支持哪几种索引 索引是在MySql存储引擎层中实现的,而不是在服务器层 从数据结构角度 1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理...,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。...,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。...MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。...,为可选参数,如果不指定,MYSQL默认col_name为索引值; 5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度; 6、asc或desc指定升序或降序的索引存储 缺点

    1.6K10

    MySQL索引类型

    一、索引的分类 1、唯一索引和普通索引 普通索引:是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。 唯一索引索引列的值必须唯一,但允许有空值。...全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建。MySQL 5.7.xx之前只有MyISAM存储引擎支持全文索引。...4、空间索引 空间索引是对空间数据类型的字段建立的索引MySQL中的空间数据类型有4中,分别是: geometry、point、linstring和polygon 。...MySQL使用SPATIAL关键字进行扩展,使得能够用于创建空间索引的列,必须将其声明为NOT NULL,同样,在MySQL 5.7.xx之前,空间索引只能在存储引擎为MyISAM的表中创建。...6、空间索引 空间索引:必须在MyISAM类型的表中创建,且空间类型的字段必须为非空。

    1.3K30

    MySQL常见索引类型

    关系型数据库中的索引,能够提升数据检索的效率,是提升性能的主要途径,GreatSQL开源社区推送的这篇《MySQL 常见索引类型介绍》,介绍了在MySQL中常见的几种索引。...MySQL 主要索引类型有如下几种, (1) 主键索引。 (2) 唯一索引。 (3) 普通索引。 (4) 空间索引。 (5) 全文索引。...`idx_u1` (`u1`) 单列索引,即索引创建在单个列上, # 创建单列索引 mysql> alter table t1 add index idx_u1(`u1`); # 查看创建的索引关键词..., 空间索引是对空间数据类型的字段建立的索引MYSQL使用SPATIAL关键字进行扩展,使其能够在空间数据类型的语法上创建空间索引。...的TIMESTAMP数据类型》 《你知道雨的类型有几种?》

    85640

    MySQL 索引类型

    索引有很多种类型,为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而不是服务器层实现。不同存储引擎的索引其工作方式并不一样。也不是所有存储引擎都支持所有类型索引。...即使多个存储引擎支持同一种类型索引,其底层实现也可能不同。 一、B-Tree 索引 ---- 我们通过提到索引时,多半说的都是 B-Tree 索引,使用 B-Tree 数据结构来存储数据。...最终存储引擎要么是找到对应的值,要么该记录不存在。 叶子节点比较特别,它们的指针指向的是被索引的数据,而不是其他的节点页(不同引擎的“指针”类型不同)。...哈希索引将所有的哈希码存储索引中,同时在哈希表中保存指向每个数据行的指针。 【MySQL 中】:只有 Memory 引擎显示支持哈希索引。...五、其他索引类型 ---- 还有第三方的存储引擎使用不同类型的数据结构来存储索引

    1.4K30

    MySQL索引篇之索引存储模型

    上篇文章我们介绍了什么是索引索引类型,明白了索引其实也是通过特定的数据结构来存储的数据,作用是用来提升我们查询和更新数据的效率的,本文我们就来推演下索引存储模型 二分查找   给定一个1~100...平衡的问题我们解决了,那么平衡二叉树作为索引怎么查询数据?   在平衡二叉树中,一个节点,它的大小是一个固定的单位,作为索引应该存储什么内容?   ...它应该存储三块的内容:   第一个是索引的键值。比如我们在id上面创建了一个索引,我在用where id =1的条件查询的时候就会找到索引里面的id的这个键值。   ...但是实际上,MySQL里面使用的是B Tree的改良版本,叫做B+Tree(加强版多路平衡查找树)。 B+树的存储结构: ?...MySQL中的B+Tree有几个特点: 它的关键字的数量是跟路数相等的; B+Tree的根节点和枝节点中都不会存储数据,只有叶子节点才存储数据。

    52230

    MySQL InnoDB索引存储结构

    1.1 InnoDB逻辑存储结构 MySQL表中的所有数据被存储在一个空间内,称之为表空间,表空间内部又可以分为段(segment)、区(extent)、页(page)、行(row),逻辑结构如下图:...段(segment) 表空间是由不同的段组成的,常见的段有:数据段,索引段,回滚段等等,在 MySQL中,数据是按照B+树来存储,因此数据即索引,因此数据段即为B+树的叶子节点,索引段为B+树的非叶子节点...实例前进行修改,之后便无法进行修改,除非mysqldump导出创建新库,常见的页类型有:数据页、undo页、系统页、事务数据页、插入缓冲位图页、插入缓冲空闲列表页、未压缩的二进制大对象页、压缩的二进制大对象页...存储位置不同:B+树非叶子节点的关键字只起到索引作用,实际的关键字存储在叶子节点,B树的非叶子节点也存储关键字。...,则立刻返回给存储在缓存中的结果,否则进入下一个阶段; 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划; MySQL 根据优化器生成的执行计划,调用存储引擎的API来执行查询; 将结果返回客户端

    1.2K20

    mysql索引类型有哪些

    mysql索引类型有:最基本的没有限制的普通索引索引列的值必须唯一的唯一索引,主键索引,多个字段上创建的组合索引以及用来查找文本中的关键字的全文索引 微信图片_20191202154142.jpg...MySQL中的索引类型有以下几种 普通索引 唯一索引 主键索引 组合索引 全文索引 1、普通索引 是最基本的索引,它没有任何限制。...一般是在建表的时候同时创建主键索引: 微信图片_20191202154733.png 4、组合索引 指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。...因为更新表时,不仅要保存数据,还要保存一下索引文件。 2、建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引索引文件的会增长很快。...5、不要在列上进行运算,这将导致索引失效而进行全表扫描,例如 微信图片_20191202161035.png 6、不使用not in和操作 以上就是mysql索引类型有哪些的详细内容

    4.3K31

    MySQL 常见索引类型介绍

    MySQL 主要索引类型有如下几种: 1.主键索引 2.唯一索引 3.普通索引 4.空间索引 5.全文索引 假设有如下一张表 CREATE TABLE `t1` ( `id` bigint unsigned...如果是组合索引,则列值的组合必须唯一 # 创建唯一索引 mysql> alter table t1 add unique idx_u1(`u1`); # 查看创建的索引关键词 UNIQUE KEY `...idx_u1` (`u1`) 单列索引索引创建在单个列上 # 创建单列索引 mysql> alter table t1 add index idx_u1(`u1`); # 查看创建的索引关键词 KEY...`idx_u1` (`u1`) 多列索引 创建多列索引时记得遵循最左匹配原则,把区分度较高的字段放前面 # 创建多列索引 mysql> alter table t1 add index idx_u1_...空间索引是对空间数据类型的字段建立的索引MYSQL使用SPATIAL关键字进行扩展,使其能够在空间数据类型的语法上创建空间索引

    69930

    主键索引就是聚集索引MySQL 索引类型大梳理

    全文索引MySQL 中支持的版本也需要大家留意一下: MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引。...MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引。...创建全文索引对字段类型也有要求,只有字段的数据类型为 CHAR、VARCHAR 以及 TEXT 等才可以建立全文索引。...MySQL 的全文索引最开始只支持英文,因为英文分词比较方便;中文分词就比较麻烦,所以最早的 MySQL 全文索引是不支持中文的。...只有当表包含聚集索引时,表内的数据行才会按找索引列的值在磁盘上进行物理排序和存储。每张表只能有一个聚集索引,原因很简单,因为数据行本身只能按一个顺序存储

    2.2K20

    MySQL InnoDB索引存储结构

    InnoDB索引的数据结构 InnoDB索引采用了B-Tree的数据结构,数据存储在叶子节点上,每个叶子节点默认的大小是16KB。...索引的分类 InnoDB的索引类型分为主键索引和非主键索引。 主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。...整张表的数据其实就是存储在聚簇索引中的,聚簇索引就是表。 如果没有设置主键怎么办呢?...MySQL会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键。 聚簇索引结构如下图所示: 非主键索引的叶子节点内容是主键的值。...二级索引结构如下图所示: 创建索引的建议 由于二级索引中保存了主键值,所以索引主键值越小越好,以免二级索引占用的空间过大,一般建议使用int的自增列作为主键。

    88420

    MySQL索引实战附带存储过程

    ,如果数据频繁的变动,维护两份索引文件的MySQL自然是有些招架不住。...首相我们的第一反应应该是数据量很大的时候开启事务批量插入自然是由于循环一条一条的插入的,次之自然就是MySQL自带的特性–存储过程喽,你写程序进行批量的插入自然是没有人家自身的SQL遍程更快捷喽。...MYSQL 存储过程中的关键语法 声明语句结束符,可以自定义: DELIMITER $$ 或 DELIMITER // 声明存储过程: CREATE PROCEDURE demo_in_parameter...、存储函数: create procedure 存储过程名(in|out|inout 参数 参数类型) 创建函数: create function 函数名(参数 参数类型) returen 返回值类型...所以不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 存储引擎不能使用索引中范围条件右边的列 如果系统经常出现的sql如下: SELECT SQL_NO_CACHE

    65910

    MySQL 之 事务、存储过程、索引

    事务基本原理 基本原理:Mysql允许将事务统一进行管理(存储引擎INNODB),将用户所做的操作,暂时保存起来,不直接放到数据表(更新),等到用于确认结果之后再进行操作。...事务在mysql中通常是自动提交的,但是也可以使用手动事务。 事务ACID特性 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。...begin select tname from teacher where tid > m and tid < n; set res=0; end $$ delimiter ; 1、直接在mysql...); # 查看结果 select @res; # 执行成功,@res变量值发生了变化 2、在python程序中调用 pymysql链接mysql产生的游表cursor cursor.callproc...索引的主要作用是加快数据查找速度,提高数据库的性能。 索引MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。

    67220

    MySQL进阶 1:存储引擎、索引

    面试题:为什么InnoDB存储引擎选择使用B+Tree索引结构2.2 MySQL索引有哪些类型2.2.1 数据结构维度2.2.2 物理存储维度:聚簇索引&非聚簇索引2.2.3 逻辑维度2.3 主键索引和唯一索引有什么区别...Hash索引MySQL中除了支持B+Tree索引,还支持一种索引类型---Hash索引。哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。...指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低;相对Hash索引,B+tree支持范围匹配及排序操作;2.2 MySQL索引有哪些类型MySQL索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构...普通索引: 普通索引MySQL 中最基本的索引类型,允许在定义索引的列中插入重复值和空值。联合索引: 联合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。...索引的维护成本:索引不仅占用存储空间,还会增加数据插入、删除和更新操作的维护成本。查询类型:需要分析查询类型,确保索引能够被有效利用。例如,对于只读或几乎只读的表,建立索引可能没有太大必要。

    9100

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券