本文主要介绍了7种不同类型的MySQL索引类型。在MySQL数据库表中,对字段进行建立索引是可以大幅度的提高其实际查询速度。通过对这些索引的巧妙的运用,我们可以令MySQL的查询和运行更加高效。

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。

下面介绍几种常见的MySQL索引类型:

在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:

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

我们随机向里面插入了10000条记录,其中有一条:5555, admin。

在查找username="admin"的记录

SELECT * FROM mytable WHEREusername='admin';

时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描所有记录,即要查询10000条记录。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。

MySQL索引类型包括:

(1)普通索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

创建索引

CREATE INDEX indexName ON mytable(username(length));

如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。

修改表结构

ALTER mytable ADD INDEX [indexName] ON (username(length))

创建表的时候直接指定

CREATE TABLE mytable( ID INT NOT NULL,

username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );

删除索引的语法:

DROP INDEX [indexName] ON mytable;

(2)MySQL索引类型:***索引

它与前面的普通索引类似,不同的就是:索引列的值必须***,但允许有空值。如果是组合索引,则列值的组合必须***。它有以下几种创建方式:

创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(length))

修改表结构

ALTER mytable ADD UNIQUE [indexName] ON (username(length))

创建表的时候直接指定

CREATE TABLE mytable( ID INT NOT NULL,

username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );

(3)MySQL索引类型:主键索引

它是一种特殊的***索引,不允许有空值。一般是在建表的时候同时创建主键索引:

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

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

(4)组合索引

为了形象地对比单列索引和组合索引,为表添加多个字段:

CREATE TABLE mytable( ID INT NOT NULL, username

VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );

为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:

ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);

建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。

如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。

建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:

usernname,city,age usernname,city usernname

以上的相关内容就是对MySQL索引类型的部分内容的介绍,望你能有所收获。

【编辑推荐】

【责任编辑:孙巧华 TEL:(010)68476606】

点赞 0

mysql各种索引名称_MySQL索引类型大汇总相关推荐

  1. mysql索引技术_MySQL索引类型

    首先请查看不同引擎支持的索引类型:存储引擎简介 . 聚集索引和非聚集索引概念见:聚集索引与非聚集索引 和 聚集索引 . 覆盖索引见:覆盖索引 . 1. InnoDB的每一个表都会有一个聚集索引(第一索 ...

  2. mysql索引总结_mysql 索引类型以及创建

    文章归属:http://feiyan.info/16.html  自己还是小白,从借鉴别人的东西开始学习. 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没 ...

  3. mysql中索引类型索引方法_MYSQL索引的类型和索引的方式

    索引的类型: normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索 ...

  4. mysql查询索引位置_mysql索引在什么位置

    mysql索引的位置在[数据库安装目录\data\databasename].索引是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键. MySQL中索引的简介 (视频教程推荐:mys ...

  5. authentication method mysql 8.0查询_mysql 索引整理

    一.MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 为何要有索引? ​ 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更 ...

  6. mysql 视图会走索引吗_MySQL索引和视图

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

  7. mysql设置id值为索引值_MySQL 索引

    一.索引作用 提供了类似于书中目录的作用,目的是为了优化查询 (一).索引种类 1.B树索引(Balance Tree) 作用 Btree的设计理念,就是让查询能够快速锁定范围,特别适合于范围查询. ...

  8. mysql多索引结构_MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  9. mysql索引分析_MySQL索引分析和优化

    什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里面 ...

最新文章

  1. 怎么禁止/开启Ubuntu自动更新升级_豆豆技术派的博客-CSDN博客_ubuntu 自动更新
  2. system , DOS 命令
  3. SQL Server 2012中的ColumnStore Index尝试
  4. textarea实现datalist效果_手把手撸代码实现Virtual Dom amp;amp; Diff
  5. 软件测试技术lab1 2017.3.13
  6. android 使用AIDL实现进程间通讯
  7. [javascript|基本概念|Number]学习笔记
  8. 软件工程复习提纲——第七章
  9. 比茅台还暴利!靠卖牌子年赚40个亿,如今被质疑造假
  10. 十年码农的肺腑之言:“技术不是万能”
  11. geoserver三维_基于geoserver的伪三维地图制作
  12. 药品计算机培训计划,_计算机培训学习计划范文
  13. 为什么要发布海外新闻稿,海外稿件怎么写
  14. mysql 蚂蚁金服_面试蚂蚁金服,首战被MySQL惨虐,熬夜啃透这份阿里面经复盘一个月再战拿下P7offer...
  15. 数据库工程师的几个发展方向
  16. ThingWorx公开课圆满结束
  17. linux下的lib文件
  18. 1768 Problem A 算法7-15:迪杰斯特拉最短路径算法
  19. PAT 1002 写出这个数 (20分)(Java)
  20. WAF是干什么的 有哪些功能

热门文章

  1. 成为伟大,影响伟大---张一鸣
  2. 服务器微信了早上好,每日早上好经典微信祝福晨语(25页)-原创力文档
  3. c++中除号/ 的用法
  4. 探索 YOLO v3 实现细节 - 第4篇 数据和y_true
  5. 开通微信公众号流程所需资料及时间
  6. Locky邮件病毒肆虐 盈世Coremail打造“金钟罩”
  7. HTML5学习总结-04 音频视频播放
  8. 模糊查询SQL语句 该怎么写
  9. unity模块切换_Unity3D-游戏画面高低品质切换
  10. 【华为OD机试真题 JS】热点网站统计