一、前提信息

1.数据库版本

  1. mysql> select version(),user();
  2. +------------+----------------+
  3. | version() | user() |
  4. +------------+----------------+
  5. | 5.5.32-log | root@localhost |
  6. +------------+----------------+
  7. 1 row in set (0.00 sec)

2.创建索引的帮助信息

  1. mysql> help create index;

二、操作语句

1.添加索引

(1) 建表时添加索引

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

(2)指定列添加主键

  1. alter table stu add primary key(id);

(3)指定列上添加索引

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

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

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

(5)创建哈希索引

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

(6)创建组合索引

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

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

(7)创建唯一索引

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

2.删除普通索引

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

3.查看索引

  1. mysql> show index from zwq.stu2;
  2. +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+
  3. | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type |
  4. +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+
  5. | stu2 | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE |
  6. | stu2 | 1 | index_dept | 1 | dept | A | 0 | 8 | NULL | YES | BTREE |
  7. +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+
  8. 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. jQuery中使用$.each()遍历后台响应的json字符串问题

    今天在做练习项目的时候,使用$.each()方法遍历后台传过来的json字符串时,chrome浏览器中发现如下问题  Cannot use 'in' operator to search for 'l ...

  2. HDU1284--完全背包

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. Servlet实践--留言板-v1

    功能介绍: 由三个jsp页面组成,在doGet中根据请求URL中的请求参数不同,跳转到不同的页面: 页面1:显示整个留言板列表 页面2:创建留言页面(包括用户.主题.内容和上传文件) 页面3:在查看单 ...

  4. Codeforces 821E Okabe and El Psy Kongroo

    题意:我们现在位于(0,0)处,目标是走到(K,0)处.每一次我们都可以从(x,y)走到(x+1,y-1)或者(x+1,y)或者(x+1,y+1)三个位子之一.现在一共有N段线段,每条线段都是平行于X ...

  5. 【POJ3254】Corn Fields

    http://poj.org/problem?id=3254 题意:给你一块n*m(0<n,m<=12)的地图,其中有的方格是肥沃的(用1表示),有的方格是贫瘠的(用0表示).现在约翰要在 ...

  6. 自动类型安全的.NET标准REST库refit

    在SCOTT HANSELMAN 博客上看到一个好东西<Exploring refit, an automatic type-safe REST library for .NET Standar ...

  7. Code Kata:螺旋矩阵 javascript实现

    1 2 3 4  5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9  如图所示,就是一个5*5的螺旋矩阵 我的思路如下: 第一步:拆分 ...

  8. Sagit.Framework For IOS 开发框架入门教程3:Start引导页及框架布局和隐藏事件的内幕

    前言: 框架依旧在快速更新着:在重构.简化代码,统一标准的过程中. 中间也遇到各种坑,不过好在一步一脚印的解决了. 虽然还有些功能还在思考,不过教程,还是得补上: 上篇文章:Sagit.Framewo ...

  9. 将STM32 iap hex文件与app hex文件合并为一个hex文件

    日前公司产品需要增加远程升级功能,boot loader程序写好后交予生产部门使用时他们反馈每个产品程序需要刷写两次(一个boot loader 一个app程序),生产进度变慢浪费时间,于是乎研究如何 ...

  10. minicom在虚拟机(linux)安装配置过程

    1. minicom须要ncurses库的支持.否则安装会有问题. A. 下载ncurses.我选择是ncurses-5.6.tar.gz 下载地址:http://directory.fsf.org/ ...