MySQL索引篇之千万级数据实战测试


Posted in MySQL onApril 05, 2021
  1. MySQL索引创建

先说明一个问题啊,如果你创建数据表时创建了主键,此时主键列会自动创建索引

-- 创建索引的语法格式
-- alter table 表名 add index 索引名[可选](列名, ..)
-- 给name字段添加索引
alter table classes add index my_name (name);
  1. 索引删除
-- 删除索引的语法格式
-- alter table 表名 drop index 索引名
alter table classes drop index my_name;

-- 备注:如果不知道索引名,可以查看创表sql语句
show create table classes;
  1. 特殊索引–联合索引说明:

3.1. 联合索引又叫复合索引,即一个索引覆盖表中两个或者多个字段,一般用在多个字段一起查询的时候
3.2 减少磁盘空间开销,因为每创建一个索引,其实就是创建了一个索引文件,那么会增加磁盘空间的开销。
3.3 联合索引的最左原则:在使用联合索引的时候,我们要遵守一个最左原则,即index(name,age)支持 name 、name 和 age 组合查询,而不支持单独 age 查询,因为没有用到创建的联合索引。

  • 联合索引的创建
-- 创建联合索引
alter table teacher add index (name,age);
  • 假设我们已经创建了(name, age)的联合索引,看下面:
-- 下面的查询使用到了联合索引
select * from stu where name='张三' -- 这里使用了联合索引的name部分
select * from stu where name='李四' and age=10 -- 这里完整的使用联合索引,包括 name 和 age 部分 
-- 下面的查询没有使用到联合索引
select * from stu where age=10 -- 因为联合索引里面没有这个组合,只有 name | name age 这两种组合
  1. 接下来,我们展示一个索引实战案例 – 对比查询效率提升:
# 1. 创建测试表testindex:
create table test_index(title varchar(10));
# 2.  向数据表中写入数据
from pymysql import connect

def main():
    # 创建Connection连接
    conn = connect(host='localhost',port=3306,database='python',user='root',password='mysql',charset='utf8')
    # 获得Cursor对象
    cursor = conn.cursor()
    # 插入10万次数据
    for i in range(10000000):
        cursor.execute("insert into test_index values('ha-%d')" % i)
    # 提交数据
    conn.commit()

if __name__ == "__main__":
    main()

# 3. 开启运行时间监测:
set profiling=1;
# 4. 查找第1000万条数据ha-99999999  (没有索引的情况)
select * from test_index where title='ha-99999999';
# 5. 查看执行的时间:
show profiles;
# 6. 给title字段创建索引:
alter table test_index add index (title);
# 7. 再次执行查询语句           (索引已经创建的情况)
select * from test_index where title='ha-99999999';
# 8. 再次查看执行的时间
show profiles;
  • 未建立索引的情况下查询时间:
    MySQL索引篇之千万级数据实战测试
  • 建立索引之后的数据查询时间:
    MySQL索引篇之千万级数据实战测试
    对比计算:
    MySQL索引篇之千万级数据实战测试

总结:本次测试结果,创建索引查询与无索引查询对比之下效率提升105倍。

MySQL 相关文章推荐
mysql对于模糊查询like的一些汇总
May 09 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
MySQL 重命名表的操作方法及注意事项
May 21 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
MySQL GRANT用户授权的实现
Jun 18 MySQL
MySQL一些常用高级SQL语句
Jul 03 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
mysql 索引合并的使用
Aug 30 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 MySQL
MySQL表的增删改查(基础)
Apr 05 #MySQL
MySQL入门命令之函数-单行函数-流程控制函数
Apr 05 #MySQL
浅析InnoDB索引结构
Apr 05 #MySQL
mysql知识点整理
Apr 05 #MySQL
MySQL令人咋舌的隐式转换
Apr 05 #MySQL
MySQL锁机制
MySQL学习总结-基础架构概述
You might like
php递归列出所有文件和目录的代码
2008/09/10 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
python批量获取html内body内容的实例
2019/01/02 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
施工安全标语
2014/06/07 职场文书
葬礼主持词
2015/07/02 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书