索引初步

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

拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。

索引分单列索引、唯一索引、组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引;唯一索引,即索引列的值必须唯一,但允许有空值。 创建主键的时候回自动创建唯一索引。组合索引,即一个索引包含多个列。

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

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

缺点

虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

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

索引结构

实验准备

一个2千万左右的数据表(当然不是手写)

创建索引:Navicat 15 for MySQL (图形化工具)

1、新建一个数据库

create database test default character set utf8;

2、新建一个数据表

CREATE TABLE testsql (id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment '自增主键',dept tinyint not null comment '部门id',name varchar(30) comment '用户名称',create_time datetime not null comment '注册时间',last_login_time datetime comment '最后登录时间'
) comment '测试表';

3、写入数据

insert into testsql values(1,1,'user_1', '2018-01-01 00:00:00', '2018-03-01 12:00:00');

4、赋值

set @i=1;

5、做一个表的倍数增加(不然几千万的数据写一年都写不完)

insert into testsql(dept, name, create_time, last_login_time)
select left(rand()*10,1) as dept,   #随机生成1~10的整数concat('user_',@i:=@i+1),   #按序列生成不同的namedate_add(create_time,interval +@i*cast(rand()*100 as signed) SECOND), #生成有时间大顺序随机注册时间date_add(date_add(create_time,interval +@i*cast(rand()*100 as signed) SECOND), interval + cast(rand()*1000000 as signed) SECOND) #生成有时间大顺序的随机的最后登录时间
from testsql;

一直重复运行上面的命令 (数据成倍增长)

到后面的速度会越来越慢,可能要几分钟,这是正常的

6、查看

select count(*) from testsql;

这行命令可以查看数据表已经达到了多少列

直到数字出现了几千万行就可以停止了

(实几百万行已经可以看到效果了)

查看日志

show variables like "%_buffer%";

7、实验

这个时候数据表已经达到了几千万
可以查询以下几千万数据中的某一行

select COUNT(*) from t where name='user_500000';

可以看到搜索速度很慢

8、创建索引

选中数据表,单击右键
找到索引
名字可以随便取
字段我选择的是name(其他也可以)

类型我选的是NORMAL,方法用的是BTREE

保存,可能要等几分钟,这时候不要乱动

9、实验效果

这个时候重新搜索,可以看到延迟已经没有了

select COUNT(*) from t where name='user_500000';

以上就是MySQL数据库索引的教程

Navicat创建MySQL数据库索引教程相关推荐

  1. php mysql query 创建_借助PHP的mysql_query()函数来创建MySQL数据库的教程_MySQL

    以mysql_query()函数作为教程的基础前提,我们先来看一下mysql_query()的用法: mysql_query()函数PHP MySQL 函数库中,mysql_query() 函数用于向 ...

  2. mysql_query 资源标识符_借助PHP的mysql_query()函数来创建MySQL数据库的教程

    以mysql_query()函数作为教程的基础前提,我们先来看一下mysql_query()的用法: mysql_query()函数 PHP MySQL 函数库中,mysql_query() 函数用于 ...

  3. 通过Navicat创建MySQL数据库并倒入表数据的两种方式

    方式一:通过图形界面(Navicat)进行创建 创建数据库 1.首先建立MySQL数据库连接 2. 然后创建一个数据库 导入表结构(资料/数据模型/sql文件) 1.首先打开数据库 2.然后执行sql ...

  4. godaddy mysql 地址 2014_Godaddy空间创建MySql数据库图文教程

    现在阶段国内的空间极度不稳定,说不定下一秒你的服务器就被封了.越来越多的站长选择了用国外主机.而godaddy就是一个很大的选择,它便宜,它稳定,毛仔一直用了两年,就没有出过问题. 不过毕竟是英文的管 ...

  5. 使用navicat创建mysql数据库

    一.新建数据库 1.填写数据库名称 填写数据库名称 2.选择字符集 3.选择排序规则 4.新建表 点击添加栏位,添加不同字段,对个字段进行设置,并设置主键.是否非空.自增长.长度等

  6. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...

    内容简介 郑明秋.蒙连超.赵海侠主编的<MySQL数据库实用教程>是作者在多年的数据库开发实践与教学经验的基础上,根据计算机相关专业的职业岗位能力需求及学生的认知规律倾心组织编写的.本教材 ...

  7. 石正喜MySQL数据库使用教程_《21世纪高职高专系列规划教材:MySQL数据库实用教程》【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 石正喜编 出版社:北京师范大学出版社 出版时间:2014-01-01 00:00:00 版次:1 印次:1 印刷时间:2014-01-01 字数:400000 页数:298 开本:1 ...

  8. 郑明秋什么版本的MySQL_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 郑明秋,蒙连超,赵海侠著 出版社:北京理工大学出版社 出版时间:2017-12-01 版次:1 页数:207 开本:16开 装帧:平装 ISBN:9787568250825 版权提供 ...

  9. myeclipse mysql连接_MyEclipse连接MySQL数据库图文教程

    这篇文章主要为大家详细介绍了MyEclipse连接MySQL数据库图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 自己在自学JavaEE课程时,在做一些小东西的时候,需要连接MySQL数据 ...

最新文章

  1. 换了路由器电脑都连不上网了_技术丨电脑连不上网,我要如何冲浪?
  2. python使用matplotlib可视化、自定义Y轴轴标签刻度旋转的角度(customize degree rotating axis tick labels in matplotlib)
  3. HttpContext.Current.Session ,出现未将对象引用设置到实例上
  4. 微软提供支持Windows 10预览版和EdgeHTML 14的预配置虚拟主机
  5. 详解Linux的压缩解压缩命令
  6. 七大排序的个人总结(二) 归并排序(Merge
  7. 搞清Image加载事件(onload)、加载状态(complete)后,实现图片的本地预览,并自适应于父元素内(完成)...
  8. shutil——高级的 文件、文件夹、压缩包 处理模块
  9. Python3中queue模块的使用
  10. 单播广播多播任播的分别
  11. 第14次全天课笔记 20181028 集合、时间、类
  12. 欧科云链OKLink:以太坊网络难度达到5.74P的历史新高
  13. python下批量修改图片格式和大小
  14. 紧贴“十四五”规划 天威诚信强势助力政务信息化系统建设
  15. 0x0000000指令引用”0x0000000”内存,该内存不能为written
  16. 深度迅雷5.8.3.556无广告绿色超级精简版【迅雷6核心文件】-绿软下载
  17. CCF201803-4-棋局评估
  18. 如何制作伪原创视频短视频伪原创软件
  19. arcgis把jpg转成栅格图像_土地利用JPG数据转栅格
  20. Unity 中实现擦除功能

热门文章

  1. 《王道》数据结构之树和二叉树(五)
  2. 软件测试-白盒灰盒篇
  3. Python学习日记 第九天 EX20-21
  4. 基于OptiSystem的LD\LED\EDFA仿真分析
  5. 浪潮NF8460M4服务器安装Centos系统
  6. mysql 第24章 优化
  7. 从土巴啊里模式到电商平台发展的思考
  8. 基于javaweb的药品管理系统(java+springboot+html+layui+bootstrap+echarts+mysql)
  9. 大学c语言程序上机考试试题,C语言上机试题100套
  10. Java项目(三)-- SSM开发社交网站(7)--会员注册与登录