精华内容
下载资源
问答
  • 索引类型有哪些
    千次阅读
    2021-01-19 08:26:59

    一、索引的类型

    mysql索引的四种类型:主键索引、唯一索引、普通索引和全文索引。通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

    主键索引:

    主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。

    alter table table_name add primary key (`字段名`);

    唯一索引:

    索引列的所有值都只能出现一次,即必须唯一,值可以为空。

    alter table table_name add primary key (`字段名`);

    普通索引 :

    基本的索引类型,值可以为空,没有唯一性的限制。

    alter table table_name add index (`字段名`);

    全文索引:

    全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。

    全文索引不支持中文需要借sphinx(coreseek)或迅搜技术处理中文。

    alter table 表名 add FULLTEXT(`字段名`);

    二、查看表的所有索引和删除

    #查看:

    show indexes from `表名`;

    #或

    show keys from `表名`;

    #删除

    alter table `表名` drop index 索引名;

    三、索引的机制

    1.为什么我们添加完索引后查询速度为变快?

    传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍

    在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据

    2.索引的代价

    2.1创建索引是为产生索引文件的,占用磁盘空间

    2.2索引文件是一个二叉树类型的文件,可想而知我们的dml操作同样也会对索引文件进行修改,所以性能会下降

    3.在哪些column上使用索引?

    3.1较频繁的作为查询条件字段应该创建索引

    3.2唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段

    3.3更新非常频繁的字段不适合作为索引

    3.4不会出现在where子句中的字段不该创建索引

    总结: 满足以下条件的字段,才应该创建索引.

    a: 肯定在where条经常使用 b: 该字段的内容不是唯一的几个值 c: 字段内容不是频繁变化。

    四、查看索引的使用情况

    show status like '%Handler_read%' ;

    handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。

    handler_read_rnd_next:这个值越高,说明查询低效。

    更多相关内容
  • 有哪些索引可供选择呢? 1、普通索引 最基本的索引,它没有任何限制,用于加速查询。 创建方法: a.建表的时候一起创建 CREATE TABLE mytable (name VARCHAR(32), INDEX index_mytable_name (name))

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net

    使用索引可以大大提高MySQL的检索速度,但是也会降低更新表的速度,索引虽好可不要贪多哦。
    有哪些索引可供选择呢?

    1、普通索引
    最基本的索引,它没有任何限制,用于加速查询。
    创建方法:
    a.建表的时候一起创建

    CREATE TABLE mytable (name VARCHAR(32), INDEX index_mytable_name (name));

    b.建表后,直接创建索引

    CREATE INDEX index_mytable_name ON mytable (name);

    c.修改表结构

    ALTER TABLE mytable ADD INDEX index_mytable_name (name);

    注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))。

    2、唯一索引
    索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
    创建方法:
    a.建表的时候一起创建

    CREATE TABLE mytable (`name` VARCHAR(32), UNIQUE index_unique_mytable_name (`name`));

    b.建表后,直接创建索引

    CREATE UNIQUE INDEX index_mytable_name ON mytable (name);

    c.修改表结构

    ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);

    注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))。

    3、主键索引
    是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。
    创建方法:
    a.建表的时候一起创建

    CREATE TABLE mytable (`id` int(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32), PRIMARY KEY (`id`));

    b.修改表结构

    ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);

    注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))。

    4、组合索引
    指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。
    创建方法:
    a.建表的时候一起创建

    CREATE TABLE mytable (`id` int(11), `name` VARCHAR(32), INDEX index_mytable_id_name (`id`,`name`));

    b.建表后,直接创建索引

    CREATE INDEX index_mytable_id_name ON mytable (id,name);

    c.修改表结构

    ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name);

    5、全文索引
    主要用来查找文本中的关键字,而不是直接与索引中的值相比较。
    fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。实际使用较少。

    【拓展】

    哪些情况需要创建索引?
    1、主键自动建立唯一索引。
    2、频繁作为查询条件的字段应该创建索引(where后面的语句)。
    3、查询中与其它表关联的字段,外键关系建立索引。
    4、查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度。
    5、查询中统计或者分组字段。

    哪些情况不需要创建索引?
    1、表记录太少。
    2、经常增删改的表:提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。 因为更新表时,MySQL不仅要保存数据,还要保存索引文件。
    3、where条件里用不到的字段不用创建索引。
    4、数据重复且分布平均的表字段,某个数据列包含许多重复的内容,建立索引没有太大实际效果。

    展开全文
  • mysql常见索引类型有哪些

    千次阅读 2021-01-27 04:35:44
    mysql常见索引类型有:1、FULLTEXT;2、HASH;3、BTREE;4、RTREE。FULLTEXT为全文索引,目前只有MyISAM引擎支持。HASH索引可以一次定位,因此具有极高的效率。Mysql目前主要以下几种索引类型:(推荐教程:mysql...

    mysql常见索引类型有:1、FULLTEXT;2、HASH;3、BTREE;4、RTREE。FULLTEXT为全文索引,目前只有MyISAM引擎支持。HASH索引可以一次定位,因此具有极高的效率。

    faa08fa10a4084964ff91c879d5cb5b7.png

    Mysql目前主要有以下几种索引类型:

    (推荐教程:mysql教程)

    FULLTEXT,HASH,BTREE,RTREE。

    详细介绍:

    1、FULLTEXT

    即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。

    全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。

    2、HASH

    由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。

    HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。

    3、BTREE

    BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。

    4、RTREE

    RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。

    相对于BTREE,RTREE的优势在于范围查找。

    展开全文
  • MYSQL数据库四种索引类型 主键索引:   主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能一个主键。 唯一索引:   索引列的所有值都只能出现一次,即必须唯一,值可以为空。 普通索引 :   基本的...
  • mysql索引有哪些类型

    千次阅读 2021-08-20 14:02:15
    MySQL目前主要索引类型为:普通索引、唯一索引、主键索引、组合索引、全文索引。 通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当...

    MySQL目前主要有的索引类型为:普通索引、唯一索引、主键索引、组合索引、全文索引。

    通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

    下面我们来看看MySQL目前主要有的索引类型:

    1、普通索引

    普通索引是最基本的索引,它没有任何限制,值可以为空;仅加速查询。可以通过以下几种方式来创建或删除:

    1)、直接创建索引

    CREATE INDEX index_name ON table(column(length))

    2)、修改表结构的方式添加索引

    ALTER TABLE table_name ADD INDEX index_name ON (column(length))

    3)、删除索引

    DROP INDEX index_name ON table

    2、唯一索引

    唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。简单来说:唯一索引是加速查询 + 列值唯一(可以有null)。以通过以下几种方式来创建:

    1)、创建唯一索引

    CREATE UNIQUE INDEX indexName ON table(column(length))

    2)、修改表结构

    ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))

    3、主键索引

    主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。简单来说:主键索引是加速查询 + 列值唯一(不可以有null)+ 表中只有一个。

    一般是在建表的时候同时创建主键索引:

    CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );

    当然也可以用 ALTER 命令。记住:一个表只能有一个主键。

    4、组合索引

    组合索引指在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。

    可以说:组合索引是多列值组成的一个索引,专门用于组合搜索,其效率大于索引合并。

    ALTER TABLE `table` ADD INDEX name_city_age (name,city,age);

    5、全文索引

    全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。

    1)、创建表的适合添加全文索引

    复制代码

    CREATE TABLE `table` (
    
        `id` int(11) NOT NULL AUTO_INCREMENT ,
    
        `title` char(255) CHARACTER NOT NULL ,
    
        `content` text CHARACTER NULL ,
    
        `time` int(10) NULL DEFAULT NULL ,
    
        PRIMARY KEY (`id`),
    
        FULLTEXT (content)
    
    );

    复制代码

    2)、修改表结构添加全文索引

    ALTER TABLE article ADD FULLTEXT index_content(content)

    3)、直接创建索引

    CREATE FULLTEXT INDEX index_content ON article(content)

    1.添加PRIMARY KEY(主键索引)

    ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

    2.添加UNIQUE(唯一索引)

    ALTER TABLE `table_name` ADD UNIQUE (`column`)

    3.添加INDEX(普通索引)

    ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

    4.添加FULLTEXT(全文索引)

    ALTER TABLE `table_name` ADD FULLTEXT (`column`)

    展开全文
  • oracle 索引类型

    2019-04-20 01:04:19
    NULL 博文链接:https://stevenfeng.iteye.com/blog/1884088
  • 常见索引类型

    千次阅读 2021-02-15 15:44:17
    日常开发工作中,涉及到的数据存储,要做查询优化或想深入了解存储引擎,需要对索引知识个起码的了解,下面介绍下最常见的四种索引结构。 位图索引 哈希索引 BTREE索引 倒排索引 1、位图索引(BitMap) 位图...
  • MYSQL 索引类型

    千次阅读 多人点赞 2021-02-18 12:29:44
    一、索引类型 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表 代码如下: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000...
  • mysql系列:全网最全索引类型汇总

    千次阅读 多人点赞 2020-09-26 01:45:06
    今天和大家一起总结mysql中有哪些索引类型。 一、mysql中有哪些索引类型? 聚簇索引 (Clustered Index) 非聚簇索引 主键索引(PRIMARY KEY) 辅助索引(Secondary Indexes) HASH索引 BTREE索引 T-TREE索引 R-Tree索引 ...
  • MySQL索引的概念以及七种索引类型介绍。
  • 索引有哪些类型

    万次阅读 2016-08-25 08:46:43
    一、唯一索引是什么?  1. 索引列(字段)的所有值都只能出现一次,即必须唯一 -------------------------------------------------------------------------------- 二、主键索引与唯一索引的区别  1. 主键是...
  • 数据库的五种索引类型

    千次阅读 2020-06-24 15:28:06
    本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方 首先:先假设一张表,表的数据10W条数据,其中一条数据是nickname=‘css’,如果要拿这条数据的话需要些的...
  • 主要介绍了网站数据库的优化最为基础的优化措施就是建立数据库索引了,这里就介绍一下,什么是数据库索引有哪些类型和特点
  • MySQL索引有哪些分类? 按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。 按物理存储分类可分为:聚簇索引、二级索引(辅助索引)。 按字段特性分类可分为:主键索引、普通索引、前缀索引。 按字段个...
  • ElasticSearch--索引类型

    万次阅读 2020-12-27 14:10:23
    版本变化 其他网址 ElasticSearch 中的索引类型的前生今世 - 程序印象
  • 索引的种类

    千次阅读 2021-09-03 06:14:38
    普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值。 全文索引:是目前搜索引擎使用的一种关键技术,对文本的内容进行分词、搜索。 覆盖索引:查询列要被创建的索引覆盖,不必读取数据行。 组合索引:多列...
  • 索引 索引分为主键索引、唯一索引、普通索引、聚集索引、全文索引几种,而索引其实就是在无序的数据中建立索引...索引类型 主键索引 数据列不允许重复,不允许为NULL,可以被引用为外键,一个表只能一个主键索引 唯
  • Oracle中的索引分类

    千次阅读 2021-05-01 06:00:22
    Oracle中的索引分类(2012-05-01 08:12:24)标签:索引b树位图创建检索功能杂谈Oracle中可以创建多种类型索引,以适应各种表的特点和各种查询条件的特点;可以按列的多少,索引列是否唯一、索引数据的组织形式对索引...
  • 聊一聊 InnoDB 引擎中的索引类型

    千次阅读 2020-01-21 16:18:21
    索引对数据库多重要,我想大家都已经知道了吧,关于索引可能大家会对它多少一些误解,首先索引是一种数据结构,并且索引不是越多越好。合理的索引可以提高存储引擎对数据的查询效率。 形象一点来说呢,索引跟...
  • 索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库...
  • 索引的几种类型分别是普通索引、唯一索引、聚集索引、主键索引、全文索引几种。 使用索引的优点: 提高数据的搜索速度 加快表与表之间的连接速度 在信息检索过程中,若使用分组及排序子句进行时,通过建立索引能...
  • 数据库中常见的索引

    2022-04-20 09:53:04
    Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。 位图索引(bitmap index) 位图索引特定于...
  • 索引类型和常见的索引

    千次阅读 2018-03-02 14:48:16
    索引类型(索引有很多种类型,在mysql中,并没有统一的索引标准,不同的存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型索引) 1、B-Tree索引 大多数MySQL引擎都支持这种索引,对索引列是...
  • ES多索引和多类型

    千次阅读 2020-11-04 21:39:31
    通过限制搜索的不同索引类型,我们可以在集群中跨所有文档搜索。Elasticsearch转发搜索请求到集群中平行的主分片或每个分...搜索包含多个索引也是同样的方式——只不过或更多的分片被关联。 查询语句 功能描述
  • 各种Oracle索引类型介绍

    千次阅读 2021-05-03 11:02:23
    逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引物理上:Partitioned 分区索引NonPartitioned 非分区索引B-tree:Normal 正常型B树...
  • MongoDB索引类型(单键、复合、多键、地理空间索引、全文索引、哈希索引)、explain索引分析以及应用场景有哪些
  • 索引的种类有哪些

    千次阅读 2020-02-07 09:14:57
    主键索引:特殊的唯一索引,不允许 null,一张表最多一个主键索引 组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并 全文索引:对文本的内容进行分词、搜索 覆盖索引:查询列要被所建的索引覆盖...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 266,050
精华内容 106,420
关键字:

索引类型有哪些

友情链接: knights_tour.rar