mysql索引对查询效率的影响
文章目录
- 数据准备
- 创建一张表
- 创建随机生成姓名的函数
- 创建新增n条数据的存储过程
- 表里插入两千万条数据
- 没索引
- 有索引
数据准备
创建一张表
create table student
(s_id varchar(64) not nullprimary key,s_name varchar(20) default '' not null,s_birth varchar(20) default '' not null,s_sex varchar(10) default '' not null
) DEFAULT CHARSET utf8;
创建随机生成姓名的函数
-- 创建随机生成姓名的函数
create function createName()RETURNS varchar(3)BEGINDECLARE LN VARCHAR(1000);DECLARE MN VARCHAR(4000);DECLARE FN VARCHAR(4000);DECLARE LN_N INT;DECLARE MN_N INT;DECLARE FN_N INT;SET LN = '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹段';SET MN = '听见雨滴落在青青草地听见远方下课钟声响起可是没有听见声音认真呼唤姓名爱上时候还不懂感情离别了才觉得刻骨铭心为什么没有发现遇见了是生命最好事情也许当时忙着微笑和哭泣忙着追逐天空中流星人理所当然忘记是谁风里雨里一直默默守护在原地原来是最想留住幸运原来和爱情曾经靠得那么近那为对抗世界决定那陪淋雨一幕幕都是一尘不染真心与相遇好幸运可已失去为泪流满面权利但愿在看不到天际张开了双翼遇见注定她会有多幸运青春是段跌跌撞撞旅行拥有着后知后觉美丽来不及感谢是给勇气让能做回自己也许当时忙着微笑和哭泣忙着追逐天空中流星人理所当然忘记是谁风里雨里一直默默守护在原地原来是最想留住幸运原来和爱情曾经靠得那么近那为对抗世界决定那陪淋雨一幕幕都是一尘不染真心与相遇好幸运可已失去为泪流满面权利但愿在看不到天际张开了双翼遇见注定她会有多幸运';SET FN = '如果骄傲没被现实大海冷冷拍下又怎会懂得要多努力才走得到远方如果梦想不曾坠落悬崖千钧一发又怎会晓得执着人拥有隐形翅膀把眼泪种在心上会开出勇敢花可以在疲惫时光闭上眼睛闻到一种芬芳就像好好睡了一夜直到天亮又能边走着边哼着歌用轻快步伐沮丧时总会明显感到孤独重量多渴望懂得人给些温暖借个肩膀高兴一路上我们默契那么长穿过风又绕了弯心还连着像往常一样最初梦想紧握在手上最想要去地方怎么能在半路就返航最初梦想绝对会到达实现了真渴望才能够算到过了天堂如果骄傲没被现实大海冷冷拍下又怎会懂得要多努力才走得到远方如果梦想不曾坠落悬崖千钧一发又怎会晓得执着人拥有隐形翅膀把眼泪种在心上会开出勇敢花可以在疲惫时光闭上眼睛闻到一种芬芳就像好好睡了一夜直到天亮又能边走着边哼着歌用轻快步伐沮丧时总会明显感到孤独重量多渴望懂得人给些温暖借个肩膀高兴一路上我们默契那么长穿过风又绕了弯心还连着像往常一样最初梦想紧握在手上最想要去地方怎么能在半路就返航最初梦想绝对会到达实现了真渴望才能够算到过了天堂最初梦想绝对会到达实现了真渴望才能够算到过了天堂';SET LN_N = CHAR_LENGTH(LN);SET MN_N = CHAR_LENGTH(MN);SET FN_N = CHAR_LENGTH(FN);RETURN CONCAT(substring(LN,CEIL(RAND()*LN_N),1),substring(MN,CEIL(RAND()*LN_N),1),substring(FN,CEIL(RAND()*FN_N),1));END;
创建新增n条数据的存储过程
create procedure insertStudent(in sn int)
begindeclare i int;set i = 1;while i <= sn DOinsert intostudent(s_id, s_name, s_birth, s_sex)values(CONCAT(replace(replace(replace(convert(now(),char),'-',''),' ',''),':',''),LPAD(i,8,'0')),createName(),concat('199',convert(ceil(rand()*9),char(1)),'-',LPAD(convert(ceil(rand()*12),char(2)),2,'0'),'-',LPAD(convert(ceil(rand()*28),char(2)),2,'0')),if(rand()*2>1,'男','女')
);
set i=i+1;
end while;
end;
表里插入两千万条数据
call insertStudent(20000000);
没索引
统计数据个数
test> SELECT count(*) FROM student
[2021-12-16 14:29:15] 1 row retrieved starting from 1 in 13 s 860 ms (execution: 13 s 829 ms, fetching: 31 ms)
主键查询
test> SELECT * FROM student WHERE s_id = '2021110516302300031092'
[2021-12-16 14:40:06] 1 row retrieved starting from 1 in 36 ms (execution: 5 ms, fetching: 31 ms)
没建索引查模糊匹配存在的生日
test> SELECT * FROM student WHERE s_birth like '1990%'
[2021-12-16 14:41:03] 0 rows retrieved in 15 s 836 ms (execution: 15 s 811 ms, fetching: 25 ms)
没建索引查模糊匹配不存在的生日
test> SELECT * FROM student WHERE s_birth like '2000%'
[2021-12-16 14:56:43] 0 rows retrieved in 14 s 663 ms (execution: 14 s 640 ms, fetching: 23 ms)
没建索引按生日排序
test> SELECT * FROM student ORDER BY s_birth
[2021-12-16 15:09:38] 500 rows retrieved starting from 1 in 21 s 663 ms (execution: 21 s 627 ms, fetching: 36 ms)
有索引
建另外一张一模一样的表
create table student_02 as SELECT * from student;
建生日索引
create index student_02_s_birth on student_02(s_birth);
建索引查模糊匹配存在的生日
test> SELECT * FROM student_02 WHERE s_birth like '1998%'
[2021-12-16 15:07:41] 500 rows retrieved starting from 1 in 52 ms (execution: 17 ms, fetching: 35 ms)
建索引查模糊匹配不存在的生日
test> SELECT * FROM student_02 WHERE s_birth like '2000%'
[2021-12-16 15:08:26] 0 rows retrieved in 35 ms (execution: 6 ms, fetching: 29 ms)
建索引按生日排序
test> SELECT * FROM student_02 ORDER BY s_birth
[2021-12-16 15:10:55] 500 rows retrieved starting from 1 in 143 ms (execution: 65 ms, fetching: 78 ms)
mysql索引对查询效率的影响相关推荐
- Mysql分区对大表查询效率的影响
本实验主要测试在没有任何索引的情况下分区对大表查询效率的影响 实验环境: rhel 6.5 mysql5.5.58 表结构 1 mysql> show create table users\G ...
- Mysql多表查询效率的研究(一)
Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...
- 索引的使用—— 验证索引提升查询效率 || 避免索引失效 —— 全值匹配 /最左前缀法则/范围查询右边的列,不能使用索引/不要在索引列上进行运算操作/字符串不加单引号,造成索引失效
索引的使用 索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题 验证索引提升查询效率 查询速度很快,接近0s ,主要的原因是因为id为主键,有索 ...
- mysql中in查询效率低的替代方法_一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍...
场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数据70000条 学生成绩表SC 数据70w条 查询目的:查找语文考100分的考生 查询语句: selec ...
- 基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率
基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率 1.拉取logstash,kibana,es,mysql镜像 #命令 ...
- crc32 mysql_mysql使用crc32字段建索引提高查询效率
查询效率对于各位朋友来讲是非常的重要了特别是数据库使用频繁的网站来讲是非常的必要的,今天我们来看一篇关于mysql使用crc32字段建索引提高查询效率的文章. 之前也写过这样的一篇文章,再来一篇. 给 ...
- mongo mysql 条件查询效率_mongodb查询条件对查询效率的影响
背景和概述 数据状况: mongodb的一个db中存了近2000万记录,有type(字符串).ctime(float,创建时间)等索引参数,记录的自然顺序和ctime的排序是一致的. 查询需求: 从第 ...
- MySQL -通过调整索引提升查询效率
我们遇到的最容易引起困惑的问题就是索引列的顺序.正确的顺序依赖于使用该索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要(顺便说明,本节内容适用于B-Tree索引:哈希或者其他类型的索引并不会 ...
- 聚集索引与非聚集索引及其查询效率【转载】
摘自:http://www.cnblogs.com/myaspnet/archive/2011/06/16/2082667.html 在以下的文章中,我将以"办公自动化"系统为例, ...
最新文章
- 为什么 OLAP 需要列式存储
- 图片浏览器每次只能打开一张图片_导出阿里国际站图片银行中的图片到电脑
- 鸿蒙开发-从搭建todolist待办事项来学习组件与js之间的交互
- [设计模式]设计模式之禅关于迪米特法则
- Spring AOP / AspectJ AOP 的区别?
- FastCGI中文规范
- (10)FPGA与ASIC区别
- 【多目标优化求解】基于matlab遗传算法求解多目标配电网重构模型【含Matlab源码 970期】
- Java项目开发中实现分页的三种方式一篇包会
- php shuffle有种子吗6,6个BT种子网站,没有它找不到的资源!太少人知道了怪可惜的...
- 华为联运游戏或应用审核驳回:点击登录进入游戏,未显示欢迎栏
- 6个技巧,让你十年前的老电脑流畅起来。
- Echarts——自定义仪表盘图表
- 【数字设计】恒玄科技_笔试面试题目分享
- 最大化印刷MES管理系统价值,提升印刷车间效率与质量
- 最优传输论文(十七):Sinkhorn Distances: Lightspeed Computation of Optimal Transport论文原理
- 征途完美单机版_征途单机版下载-征途单机版最新官方版-Minecraft中文分享站
- 220913_100620-华为全球校园AI算法赛事(推荐方向):广告-信息流跨域CTR预估
- js查找数组元素位置
- 实战项目:餐厅订单数据分析:订单维度和时间维度