mysql各种索引名称_MySQL索引类型大汇总
本文主要介绍了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索引类型大汇总相关推荐
- mysql索引技术_MySQL索引类型
首先请查看不同引擎支持的索引类型:存储引擎简介 . 聚集索引和非聚集索引概念见:聚集索引与非聚集索引 和 聚集索引 . 覆盖索引见:覆盖索引 . 1. InnoDB的每一个表都会有一个聚集索引(第一索 ...
- mysql索引总结_mysql 索引类型以及创建
文章归属:http://feiyan.info/16.html 自己还是小白,从借鉴别人的东西开始学习. 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没 ...
- mysql中索引类型索引方法_MYSQL索引的类型和索引的方式
索引的类型: normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索 ...
- mysql查询索引位置_mysql索引在什么位置
mysql索引的位置在[数据库安装目录\data\databasename].索引是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键. MySQL中索引的简介 (视频教程推荐:mys ...
- authentication method mysql 8.0查询_mysql 索引整理
一.MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更 ...
- mysql 视图会走索引吗_MySQL索引和视图
一.什么是索引? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度 ...
- mysql设置id值为索引值_MySQL 索引
一.索引作用 提供了类似于书中目录的作用,目的是为了优化查询 (一).索引种类 1.B树索引(Balance Tree) 作用 Btree的设计理念,就是让查询能够快速锁定范围,特别适合于范围查询. ...
- mysql多索引结构_MySQL 索引结构
谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...
- mysql索引分析_MySQL索引分析和优化
什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里面 ...
最新文章
- 怎么禁止/开启Ubuntu自动更新升级_豆豆技术派的博客-CSDN博客_ubuntu 自动更新
- system , DOS 命令
- SQL Server 2012中的ColumnStore Index尝试
- textarea实现datalist效果_手把手撸代码实现Virtual Dom amp;amp; Diff
- 软件测试技术lab1 2017.3.13
- android 使用AIDL实现进程间通讯
- [javascript|基本概念|Number]学习笔记
- 软件工程复习提纲——第七章
- 比茅台还暴利!靠卖牌子年赚40个亿,如今被质疑造假
- 十年码农的肺腑之言:“技术不是万能”
- geoserver三维_基于geoserver的伪三维地图制作
- 药品计算机培训计划,_计算机培训学习计划范文
- 为什么要发布海外新闻稿,海外稿件怎么写
- mysql 蚂蚁金服_面试蚂蚁金服,首战被MySQL惨虐,熬夜啃透这份阿里面经复盘一个月再战拿下P7offer...
- 数据库工程师的几个发展方向
- ThingWorx公开课圆满结束
- linux下的lib文件
- 1768 Problem A	算法7-15:迪杰斯特拉最短路径算法
- PAT 1002 写出这个数 (20分)(Java)
- WAF是干什么的 有哪些功能