MySQL学习2---索引

摘要:
MySQL索引MySQL索引的建立对于MySQL的高效运行非常重要,索引可以大大提高MySQL的检索速度。索引分为单列索引和组合索引。创建索引时,需要确保索引是应用于SQL查询语句的条件。实际上,索引也是一个表,它存储主键和索引字段,并指向实体表的记录。上面提到了使用索引的好处,但过度使用索引会导致滥用。因为在更新表时,MySQL不仅保存数据,还保存索引文件。
MySQL 索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

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

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

普通索引

创建普通索引

CREATE INDEX indexName ON mytable(列名);

修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(列名);

创建表的时候直接指定

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);

创建唯一性索引

CREATE UNIQUE INDEX index_name ON table_name;

创建主键索引

创建表的时候同时创建主键,主键索引自动创建;

CREATE TABLE table_name ([...], PRIMARY KEY(列名))

另外一种是已经创建表,没有指定主键,然后修改表加入主键,自动创建主键索引

ALTER TABLE table_name ADD PRIMARY KEY 列名;

创建多列索引

CREATE INDEX index_name ON table_name(列名1,列名2);
例如:
MariaDB [test]> create index salary_age_index on IT_salary(薪资,年龄);
MySQL学习2---索引第1张

删除索引的语法

直接删除索引;
DROP INDEX [indexName] ON mytable;

修改表格时删除索引;
ALTER TABLE table_name DROP INDEX index_name;

删除主键索引:
ALTER TABLE table_name DROP PRIMARY KEY;

查看索引

SHOW INDEX FROM table_name;

SHOW KEYS FROM tabel_name;

MySQL学习2---索引第2张








 

免责声明:文章转载自《MySQL学习2---索引》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java反射调用get/set方法,你还在拼接方法名吗?基于功能树分析(FTA)功能级FIT硬件测试方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql三种删除方式

一般来说mysql有三种删除数据方式: 1. delete(常用) 2. truncate(慎用) 3. drop 以上三种方式都可以删除数据,但是使用场景是不同的。 从执行速度来说: drop > truncate >> DELETE 深入底层来说: 一、DELETE DELETE是属于数据库的DML操作语言,使用delete删除数据时...

Atitit mysql redis mongodb 性能指标 目录 1.1. 二、 性能比较 1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 2 1

Atitit mysql redis mongodb 性能指标   目录 1.1. 二、 性能比较 1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 2 1.3. Mysql单表数据量达到5-10G时会出现明细的性能降级 2 1.4. Mongodb 最起码是插入速度是mysql俩倍数 2 1.5. 查询速度就...

Mysql系列(三)—— Mysql主从复制配置

一.前言 主从复制是Mysql知识体系中非常重的要一个模块。学习主从复制和后续的读写分离是完善只是知识体系的重要环节。且主从复制读写分离的思想并不仅仅局限于Mysql,在很多存储系统中都有该方案,如:redis。 从应用的角度思考,主从复制有如下优点: 可以备份数据,容灾 可以做读写分离,分担单机Mysql节点的压力。master只做write,slav...

大数据 CDH 6.2 安装

环境信息 如果是单节点的,建议将虚拟机的内存最小设置为8G,硬盘大小为100G 类别 版本 备注 CDH 6.2.0 下载网址 数据库 mysql 5.7 系统 CentOS7 jdk 1.8 cdh 修改过的 parcels 下载网址 CDH6.2.0中的软件版本信息 Component Component Ve...

CentOS7安装MySQL(完整版)

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-commu...

C#从数据库mysql读取数据

usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; u...