一、前提信息

1.数据库版本

mysql> select version(),user();
+------------+----------------+
| version() | user() |
+------------+----------------+
| 5.5.32-log | root@localhost |
+------------+----------------+
1 row in set (0.00 sec)

2.创建索引的帮助信息

mysql> help create index;

二、操作语句

1.添加索引

(1) 建表时添加索引

create table zwq.stu2(
id int(4) not null auto_increment,
name char(20) not null,
age tinyint not null default '',
dept varchar(16) default null,
primary key(id),
key index_name(name)
) charset=gbk;

(2)指定列添加主键

alter table stu add primary key(id);

(3)指定列上添加索引

-- 在name列上添加名为index_name的索引
alter table zwq.stu2 add index index_name(name);

(4)在指定的库、表、列、字符长度上创建索引

-- 数据库zwq 表 stu2 字段dept 字符长度8
create index index_dept on zwq.stu2(dept(8));

(5)创建哈希索引

 create index index_dept USING HASH on zwq.stu2(dept(8)) comment '哈希索引' ;

(6)创建组合索引

create index index_name_dept on zwq.stu2(name(8),dept(10));

注意:按条件列查询数据时,联合索引是前缀生效特性的 index(a,b,c) 仅 a,ab,abc三个查询条件可以使用到索引;b、c、bc、ac则无法使用索引

(7)创建唯一索引

mysql> create unique index uniq_index_email on zwq.stu2(email);
mysql> show columns from zwq.stu2;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | MUL | NULL | |
| age | tinyint(4) | NO | | 0 | |
| dept | varchar(16) | YES | | NULL | |
| email | varchar(30) | YES | UNI | NULL | |
+-------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

2.删除普通索引

-- 方式1
alter table zwq.stu2 drop index index_name;
-- 方式2
drop index index_dept on zwq.stu2;

3.查看索引

mysql> show index from zwq.stu2;
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+
| stu2 | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE |
| stu2 | 1 | index_dept | 1 | dept | A | 0 | 8 | NULL | YES | BTREE |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+
2 rows in set (0.03 sec)

注意:使用唯一索引且存在自增列的表,当因为唯一列重复而插入记录失败时,自增列依旧自增。

三、索引使用的基本条件

索引可以加快查询速度,但索引不仅占用存储空间、更新数据库数据时还需要维护索引数据,因此,索引是把双刃剑,并不是越多越好。几百行的数据不要建索引;更新频繁、读取少的表也不要建索引。

创建索引一定要在where语句的条件列,而不是select的选择数据的列,尽量选择唯一值的列上建索引。

四、索引失效的场景

or like null 字符集 多表 组合索引

MySQL index 增删改的更多相关文章

  1. koa+mysql实现增删改查-全栈之路(001)

    Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...

  2. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  3. node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  4. MySQL数据库(增删改查语句)

    MySQL数据库(增删改查语句)一.登录数据库:---->  mysql -uroot -proot;(对应用户名和密码)二.SQL语句:    数据定义语言DDL  用来定义数据库.表.列,关 ...

  5. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  6. Asp.Net操作MySql数据库增删改查

    Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git  1.安装MySQL数据库 ...

  7. Mysql 的 增删改查

    mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...

  8. MySQL之增删改查之

    MySQL之增删改查   前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. ...

  9. MySql之增删改查 · YbWork's Studio

    前提:在进行"增删改查"的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1."增"--添加数据 1.1 为表中 ...

随机推荐

  1. poj1611 解题报告

    并查集学习过之后做了几道相关联系,这里贴出1611 The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions:  ...

  2. WebRTC介绍及简单应用

    WebRTC介绍及简单应用 WebRTC,即Web Real-Time Communication,web实时通信技术.简单地说就是在web浏览器里面引入实时通信,包括音视频通话等. WebRTC实时 ...

  3. 工厂模式(Factory Method)

    1.工厂方法模式(Factory Method) 工厂方法模式分为三种: 1-1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 举例如下:(我们举一个发送邮件和短信的例子 ...

  4. JavaScript 性能优化技巧分享

    JavaScript 作为当前最为常见的直译式脚本语言,已经广泛应用于 Web 应用开发中.为了提高Web应用的性能,从 JavaScript 的性能优化方向入手,会是一个很好的选择. 本文从加载.上 ...

  5. mysql的explain

    explain 一般用于分析sql.  如下 [SQL] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 2 ...

  6. mysql数据库误删除操作说明

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...

  7. 如何打包静态库.framework文件 iOS

    代码调试好了开始打包成sdk,下面是将要打包的FRSDK代码(FRSDK.h暴露在外面有别人调用) 1.创建新工程(Xcode File-New-Project) 2.把下面的红色框的东西移除 3.将 ...

  8. MySQL · 引擎特性 · InnoDB 事务系统

    前言 关系型数据库的事务机制因其有原子性,一致性等优秀特性深受开发者喜爱,类似的思想已经被应用到很多其他系统上,例如文件系统等.本文主要介绍InnoDB事务子系统,主要包括,事务的启动,事务的提交,事 ...

  9. Struts框架的国际化

    本文将通过一个详细的实例来展示Struts框架的国际化,使用的版本号是struts1.1. 案例:在一个页面上有一个下拉框,下拉框中有3个国家的语言选项,各自是"中文简体".&qu ...

  10. 动态规划-迷宫-百度之星-Labyrinth

    Labyrinth Problem Description 度度熊是一仅仅喜欢探险的熊.一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上角的第一个格子才算走 ...