一、 测试索引

一 准备

数据库准备:

#1. 准备表

create table s1(

id int,

name varchar(20),

gender char(6),

email varchar(50)

);

#2. 创建存储过程,实现批量插入记录

delimiter $$ #声明存储过程的结束符号为$$

create procedure auto_insert1()

BEGIN

declare i int default 1;

while(i<3000000)do

insert into s1 values(i,'eva','female',concat('eva',i,'@oldboy'));

set i=i+1;

end while;

END$$ #$$结束

delimiter ; #重新声明分号为结束符号

#3. 查看存储过程

show create procedure auto_insert1\G

#4. 调用存储过程

call auto_insert1();

二 在没有索引的前提下测试查询速度

#无索引:mysql根本就不知道到底是否存在id等于333333333的记录,只能把数据表从头到尾扫描一遍,此时有多少个磁盘块就需要进行多少IO操作,所以查询速度很慢

mysql> select * from s1 where id=333333333;

Empty set (0.33 sec)

三 在表中已经存在大量数据的前提下,为某个字段段建立索引,建立速度会很慢

四 在索引建立完毕后,以该字段为查询条件时,查询速度提升明显

PS:

1. mysql先去索引表里根据b+树的搜索原理很快搜索到id等于333333333的记录不存在,IO大大降低,因而速度明显提升

2. 我们可以去mysql的data目录下找到该表,可以看到占用的硬盘空间多了

3. 需要注意,如下图

五 总结

#1. 一定是为搜索条件的字段创建索引,比如select * from s1 where id = 333;就需要为id加上索引

#2. 在表中已经有大量数据的情况下,建索引会很慢,且占用硬盘空间,建完后查询速度加快

比如create index idx on s1(id);会扫描表中所有的数据,然后以id为数据项,创建索引结构,存放于硬盘的表中。

建完以后,再查询就会很快了。

#3. 需要注意的是:innodb表的索引会存放于s1.ibd文件中,而myisam表的索引则会有单独的索引文件table1.MYI

MySAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在innodb中,表数据文件本身就是按照B+Tree(BTree即Balance True)组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此innodb表数据文件本身就是主索引。

因为inndob的数据文件要按照主键聚集,所以innodb要求表必须要有主键(Myisam可以没有),如果没有显式定义,则mysql系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则mysql会自动为innodb表生成一个隐含字段作为主键,这字段的长度为6个字节,类型为长整型

python 测试mysql数据库_Python MySQL 数据库之测试索引相关推荐

  1. python修改数据库_python mysql修改数据库数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. python写入mysql乱码_python MYsql中文乱码

    以前用php连mssqy时也经常出现中文乱码(中文变问号)的问题,那时就明白是编码没设置好导航,现在的Python连mssql数据库也同样出现这问题,问题一样,解决的办法当然也会相似,现在我们来看看解 ...

  3. python和数据库_python与数据库操作

    前言 最近学了一下sql,因为做数据分析不会sql真不行. 平时学的都是Python,所以如果要用pandas做数据分析,数据除了导入excel和csv文件, 应该还要会从数据库中导入数据到Pytho ...

  4. python与数据库连接语句_python 链接数据库语句

    python操作mysql数据库实现增删改查 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非 ...

  5. python医院管理系统代码_Python+MySQL开发医院网上预约系统(课程设计)一

    一:开发环境的配置 1:桌面环境为cnetos7+python2.7 2:mysql的安装与配置 1)mysql的安装 mysql官方文档: mysql yum 下载:或者直接用weget下载: wg ...

  6. python代码创建数据库_python创建数据库代码

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. python 魔兽世界升级脚本_Python 实现数据库更新脚本的生成方法

    我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了 ...

  8. python自动备份手机_python实现数据库自动备份

    python实现数据库自动备份 设计要求 执行环境centos 7 x64 每天某一个时刻自动执行备份操作,执行时间可调整 数据库备份文件保留在特定目录中,目录路径可设置 自动将当前备份版本发送到指定 ...

  9. python自动备份数据库_Python Mysql自动备份脚本

    测试系统环境  Windows 2003   python 2.5.1  mysql 5.0.1 应该只适用于Win,因为调用了CMD. 增量备份,因为自用,数据库不大. 回头有了需求加上自检测,5天 ...

最新文章

  1. 动态路由选择协议简介
  2. 【Python小游戏】当当当当 万众瞩目得《滑雪大冒险》来啦~(附源码)
  3. PHP使用fpdf生成pdf文件(含中文类)
  4. codeproject上的一款分页控件
  5. linux兴趣小组2017面试题浅析
  6. vim block vim_我如何学会爱Vim
  7. 修改终端服务端口的方法
  8. html异形轮播,异形滚动
  9. 给爱设计的你,一个理由爱上(和使用)渐变素材的理由
  10. 陆奇:疫情下的创业者,最不能缺这两大能力
  11. android 绘制控件,Android自定义控件绘制基本图形基础入门
  12. CCF201812-5 管道清洁【最小费可行流】(100分题解链接)
  13. linux基本命令示例_Linux正常运行时间命令示例
  14. 2020华为软挑成渝赛区初赛复赛方案分享
  15. 【白盒测试技术之-junit】
  16. linux中增加用户
  17. 白泽六足机器人_ros_v1——零件准备
  18. 40GE、100GE模块 10g dwdm cwdm 25g
  19. iOS WIFI 相关
  20. OSPF之LSA详解

热门文章

  1. 【Python】基础总结
  2. flask中数据库迁移
  3. python常用魔术方法
  4. pytorch保存模型pth_pytorch中保存的模型文件.pth深入解析
  5. leetcode —— 面试题 17.08. 马戏团人塔
  6. 差分隐私与可穿戴式设备调查【笔记】
  7. latex公式在括号中编辑(多行公式)
  8. 常用sql操作语句实战演示
  9. 机器学习爬大树之(GBDT原理)--回归篇
  10. Markdown--绘制流程图(flowchart)