(八)MySQL索引操作

(1)准备环境

mysql> create table t1(id int,name varchar(50));
mysql> \d $$
mysql> create procedure autoinsert_t1()
    begin
    declare i int default 1;
    while(i<200000)do
    insert into school.t1 values(i,‘ccc‘);
    set i=i+1
    ;
    end while;
    END $$
mysql> \d ;
mysql> show create procedure autoinsert_t1\G
mysql> call autoinsert_t1();

(2)创建索引

1)创建表时创建索引

创建普通索引:mysql> create table departname(id int,name varchar(50),comment varchar(50),index(name));

创建唯一索引:mysql> create table department2(id int,name varchar(50),comment varchar(50),unique index(name));

创建全文索引:mysql> create table department3(id int,name varchar(50),log text,fulltext index(log)); \针对文章给文章内容起索引

创建多列索引:mysql> create table department5(id int,name varchar(50),comment varchar(50),index index_name_comment(name,comment));

\创建多列索引建议给索引起个名字

2)在已存在表上创建索引:create

语法:create [unique|fulltext|spatial] index 索引名 on 表名(字段[(长度)] [ASC|DESC])

创建普通索引:mysql> create index index_name on department(name); \索引关键字MUL

创建唯一索引:mysql> create unique index index_id on department(id);

创建全文索引:mysql> create fulltext index index_name on department(name);

创建多列索引:mysql> create index index_name_comment on department(name,comment);

3)在已存在表上创建索引:alter table

语法:alter table 表名 add [unique|fulltext|spatial] index 索引名(字段[(长度)] [ASC|DESC])

创建普通索引:alter table department add index index_name(name);

创建唯一索引:alter table department add unique index index_name(name);

创建全文索引:alter table department add fulltext index index_name(name);

创建多列索引:alter table department add index index_name_comment(name,comment);

(3)管理索引

1)查看索引

语法:show create table 表名\G

2)测试索引

语法:explain select * from 表名 where 条件

3)删除索引

语法:drop index 索引名 on 表名;

mysql> drop index index_name on department6;

注意:先使用show create table 表名\G 查看索引名字,例如 KEY index_name (name) index_name 就是索引名字

(4)测试索引:

未使用索引之前:注意key和rows

mysql> explain  select * from t1 where id=190000;
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows   | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------------+
|  1 | SIMPLE      | t1    | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 200186 |    10.00 | Using where |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------------+

创建索引之后:

mysql> explain  select * from t1 where id=190000;
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key      | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | t1    | NULL       | ref  | index_id      | index_id | 5       | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

使用索引:查询语句使用where 条件,条件使用的列必须是索引

原文地址:https://www.cnblogs.com/lovelinux199075/p/8910217.html

时间: 2024-11-07 16:45:45

(八)MySQL索引操作的相关文章

MySQL 索引操作总结

本文主要总结了关于Mysql中索引的操作,主要涉及索引的查看,增加和删除. 1. 查看索引 http://dev.mysql.com/doc/refman/5.7/en/show-index.html SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr] 2. 插入索引 http://dev.mysql.com/doc/refman/5.7/en/create-index.htm

mysql 索引操作

增加索引 alter table table_name add index(columes) alter table table_name  add primaty key (colume) alert table table_name  add unique(colume) 删除索引 alter table drop index index_name

mysql 索引及其原理

mysql 索引 KEY与INDEX的区别: KEY is something on the logical level, describes your table and database design.INDEX is something on the physical level, helps improve access time for table operations. KEY是关系模型理论中的一部份,比如有主键(Primary Key),外键(Foreign Key)等,用于数据完

Mysql之表的操作与索引操作

表的操作: 1.表的创建: create table if not exists table_name(字段定义); 例子: create table if not exists user(id int auto_increment, uname varchar(20), address varchar(200), updateTime datetime, primary key(id)); // 设置主键 2.表(show tables;)定义查看: show create table tab

Mysql学习笔记(八)索引

原文:Mysql学习笔记(八)索引 PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日...继续学习数据库... 学习内容: 索引.... 索引的优点: 1.通过创建唯一索引,可以保证数据库每行数据的唯一性... 2.使查找的速度明显加快... 3.当使用分组和排序进行查询时,可以缩短时间... 索引的缺点: 1.维护索引需要耗费数据库的资源... 2.索引需要占用磁盘空间... 3.对表进行增删改的时候,由于索引的存在,时间会有所增加... 索引的分类... 普通索引和唯一索引

着重基础之—MySql 不能遗忘的索引操作

着重基础之—MySql 不能遗忘的索引操作 关于MySql索引的基础知识我就不在这里写了,我不太想当信息的搬运工. 技巧分享:Workbench 作为一款专为MySQL设计的ER/数据库建模工具.除了管理数据库外,其实也是一款Sql语句生成利器.合理利用,将带来事半功倍的效果.当然,前提是我们对基础知识的了解. 我先来整理一些索引操作的Sql语句,之所以整理,起因是我遇到问题时,在百度里查到的回复,基本上都是错的,需要有人来纠正. 1.多主键(PRIMARY)删除 假设场景:你在表里定义了多个主

DF学Mysql(三)——索引操作

概要: 数据库对象索引其实与书的目录非常相似,主要是为了提高从表中检索数据的速度. 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中.通过MYSQL可以快速有效地查找与键值相关联的字段. 索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总索引长度至少为256

Go语言开发(十八)、Go语言MySQL数据库操作

Go语言开发(十八).Go语言MySQL数据库操作 一.MySQL数据库驱动 1.MySQL数据库驱动简介 Go语言官方没有实现MySQL数据库驱动,常用的开源MySQL数据库驱动实现如下:(1)Go MySQL DriverGo MySQL Driver支持database/sql接口,全部采用Go语言实现.官方网站:https://github.com/go-sql-driver/mysql/(2)MyMySQLMyMySQL支持database/sql接口,也支持自定义的接口,全部采用Go

深入浅出分析MySQL索引设计背后的数据结构

在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题: 1.为什么innodb表需要主键? 2.为什么建议innodb表主键是单调递增? 3.为什么不建议innodb表主键设置过长? B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.B通常