影响索引的mysql函数_mysql索引对排序的影响实例分析

本文实例讲述了mysql索引对排序的影响。分享给大家供大家参考,具体如下:

索引不仅能提高查询速度,还可以添加排序速度,如果order by 后面的语句用到了索引,那么将会提高排序的速度。

测试

1、创建测试表:t15表

CREATE TABLE `t15` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`cat_id` int(10) unsigned NOT NULL DEFAULT '0',

`price` decimal(10,2) NOT NULL DEFAULT '0.00',

`name` char(5) NOT NULL DEFAULT '',

PRIMARY KEY (`id`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8

2、插入1W行数据

$db = 'test';

$conn = mysql_connect('localhost','root','1234');

mysql_query('use ' . $db , $conn);

mysql_query('set names utf8' , $conn);

for($i=1;$i<=10000;$i++) {

$cat_id = rand(1,10);

$price = rand(1,50000);

$name = substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,5);

$sql = sprintf("insert into t15 values (%d,%d,%f,'%s')",$i,$cat_id,$price,$name);

mysql_query($sql , $conn);

}

3、商场网站,一般都会按照某个分类进行价格上的排序,我们来模拟一下,执行同一条sql语句。

select name,cat_id,price from t15 where cat_id=1 order by price;

(1)首先不添加索引

从查询分析可以看到Extra中使用到了Using filesort,表示需要进行文件排序。

9f44ebabb97b4381addad1a789679e05.png

(2)给(cat_id,price)列添加索引

alter table t15 add index cp(cat_id,price);

这里的查询分析中Extra没用了Using filesort,表示添加上索引再进行查询的sql没有使用到外部排序,而是使用到了索引的排序,因为索引本身就是会排序的,所以不需要额外的order by一次。

19fae49ccd6f23c5bc0fc40fa1ec6dd8.png

4、观测查询时间

b29674489fa317b38538501182b123bb.png

Query_ID为1的是没有添加索引执行的语句,Query_ID为3的是添加索引后执行的语句,一个执行时间为0.013秒,一个执行时间为0.005秒,肯定是加上索引的快,我们来看看具体快在哪里

Query_ID为1的sql语句执行详细耗时图:

489edf890355748c00ed3be2c7c91b3d.png

Query_ID为3的sql语句执行详细耗时图:

c4c6f06971fe82a45c3873e9db3d0505.png

很明显,Query_ID1中的Sorting result耗时0.012秒,而Query_ID2中的Sorting result只耗时0.000004秒,而这个Sorting result就是排序耗时。

结论:索引对排序的速度是有一定的影响的,所以,在实际的开发中,要结合实际情况制定索引,并尽可能将排序字段添加至索引中。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

您可能感兴趣的文章:mysql建立高效的索引实例分析

mysql重复索引与冗余索引实例分析

mysql索引覆盖实例分析

MySQL中NULL对索引的影响深入讲解

详解MySQL索引原理以及优化

通过唯一索引S锁与X锁来了解MySQL死锁套路

mysql 添加索引 mysql 如何创建索引

MySQL索引类型总结和使用技巧以及注意事项

MySQL查看、创建和删除索引的方法

MySQL 创建索引(Create Index)的方法和语法结构及例子

mysql聚簇索引的页分裂原理实例分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...

正 文&#xff1a;在一些复杂的系统中&#xff0c;要求对信息栏目进行无限级的分类&#xff0c;以增强系统的灵活性。那么PHP是如何实现无限级分类的呢&#xff1f;我们在本文中使用递归算法并结合mysql数据表实现无限级分类。递归&#xff0c;简单的说就是一段程序代码的重复调…

python 开发框架 ant_Golang/python语言开发的分布式游戏服务器框架 mqant

软件介绍mqantmqant 是一款基于 Golang 语言的简洁&#xff0c;高效&#xff0c;高性能的分布式游戏服务器框架&#xff0c;研发的初衷是要实现一款能支持高并发&#xff0c;高性能&#xff0c;高实时性的游戏服务器框架&#xff0c;也希望 mqant 未来能够做即时通讯和物联网方…

java w3c xml_org.w3c.dom(java dom)解析XML文档

首先来了解点Java DOM 的 API:1.解析器工厂类&#xff1a;DocumentBuilderFactory创建的方法&#xff1a;DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();2.解析器&#xff1a;DocumentBuilder创建方法&#xff1a;通过解析器工厂类来获得 DocumentBuilder…

mysql migrations_Code First Migrations更新数据库结构(数据迁移)

背景 code first起初当修改model后&#xff0c;要持久化至数据库中时&#xff0c;总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges)&#xff0c;此时就会产生一个问题&#xff0c;当我们的旧数据库中包含一些测试数据时&#xff0c;当持久化更新后&#xff0c;…

java 机器码 虚拟机_Java虚拟机:源码到机器码

无论什么语言写的代码&#xff0c;其到最后都是通过机器码运行的&#xff0c;无一例外。那么对于 Java 语言来说&#xff0c;其从源代码到机器码&#xff0c;这中间到底发生了什么呢&#xff1f;这就是今天我们要聊的。如下图所示&#xff0c;编译器可以分为&#xff1a;前端编…

docker 远程连接 文件看不到_开发提升十倍生产力: IDEA 远程一键部署 Spring Boot 到 Docker...

一、开发前准备二、新建项目《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析…

java多台_Java 多态

Java中多态的特性&#xff0c;在学习中就是很难懂&#xff0c;比较抽象的概念。学的时候就犯糊涂&#xff0c;但日后会发现&#xff0c;基础在日常工作的理解中占有重要的角色。下面&#xff0c;我将用一个代码实例&#xff0c;回忆和巩固多态的概念和存在的意义。理解多态&…

快准牌电脑发软件_做自媒体必备技能,视频剪辑软件排名(精品篇)

作者&#xff1a;老马引流定位&#xff1a;专业专注引流推广0X00 前言毫不客气的说&#xff0c;视频正日益成为社交媒体和营销的重要组成部分&#xff0c;有越来越多的人参与到视频剪辑当中来&#xff0c;而其中最为关键的就是视频剪辑软件。而市面上的视频剪辑软件当然也是五花…

ad电阻原理图_【雕爷学编程】Arduino动手做(2)---光敏电阻模块

【Arduino】108种传感器模块系列实验&#xff08;02&#xff09;实验二&#xff1a;光敏电阻传感器模块我手里这块是三针版的&#xff0c;挺秀气吧光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器&#xff0c;其工作原理是基于内光电效应。光照愈强&#xff0c;阻值就…

怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 第 131 号问题:分割回文串...

题目来源于 LeetCode 上第 131 号问题&#xff1a;分割回文串。题目难度为 Medium&#xff0c;目前通过率为 45.8% 。题目描述给定一个字符串 s&#xff0c;将 s 分割成一些子串&#xff0c;使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入题目解析首先&#xff0…

hystrix threadpool coresize_Hystrix断路器 - 求知若渴的蜗牛

Hystrix介绍在微服务场景中&#xff0c;通常会有很多层的服务调用。如果一个底层服务出现问题&#xff0c;故障会被向上传播给用户。我们需要一种机制&#xff0c;当底层服务不可用时&#xff0c;可以阻断故障的传播。这就是断路器的作用。他是系统服务稳定性的最后一重保障。在…

ionic保存到mysql_ionic sqlite 存取数据封装(兼容真机与webkit浏览器)

不管是真机还是H5&#xff0c;都有提供sqlite数据库进行存储数据。那么我们只要封装好函数就能随意调用了。如果只是存储简单的键值对形式的话&#xff0c;ionic官网也提供了一个兼容网页的storage&#xff0c;https://ionicframework.com/docs/storage&#xff0c;但只能key/v…

sql plus 表的总记录数是多少_直播回顾 | 亿级并发丝毫不虚,TDSQL-SQL引擎是如何炼成的...

腾讯云数据库国产数据库专题线上技术沙龙正在火热进行中&#xff0c;3月19日唐颢的分享已经结束&#xff0c;没来得及参与的小伙伴不用担心&#xff0c;以下就是直播的视频和文字回顾。关注“腾讯云数据库”公众号&#xff0c;回复“0319唐颢”&#xff0c;即可下载直播分享PPT…

运放放大倍数计算公式_19.运算放大器的特性与应用,不得不掌握的知识点(一)...

运算放大器&#xff0c;简称“运放”&#xff0c;是电力电子中最重要的器件之一&#xff0c;主要作用为&#xff1a;信号放大、信号运算、信号处理、波形的产生和变换。一、运算放大器的内部结构集成运算放大器内部结构集成运算放大器内部一般由四个单元组成&#xff0c;各单元…

java选项设置_java环境配置

javac无法执行检查&#xff1a;看看java 相关的java相关路径有没有多余的符号&#xff0c;比如多出分号&#xff0c;逗号(笔者上面是正确的路径展示形式)Win10下 Java环境变量配置首先&#xff0c;你应该已经安装了 Java 的 JDK 了(如果没有安装JDK&#xff0c;请跳转到此网址&…

teleport 组件的作用_人脸识别综述! 覆盖人脸检测,预处理和特征表示三大核心组件!...

The Elements of End-to-end Deep Face Recognition: A Survey of Recent Advances 人脸识别是计算机视觉社区中最基础和历史悠久的话题之一。随着深度卷积网络和大尺度数据集发展&#xff0c;深度人脸识别取得极大进步并且应用到许多领域。给定一个自然图像或者视频帧作为输入…

feko软件_计算电磁学各种方法和电磁仿真软件简述

计算电磁学中有众多不同的算法&#xff0c;如时域有限差分法(FDTD)、时域有限积分法(FITD)、有限元法(FE)、矩量法(MoM)、边界元法(BEM)、 谱域法(SM)、传输线法(TLM)、模式匹配法(MM)、横向谐振法(TRM)、线方法(ML)和解析法等等。在频域&#xff0c;数值算法有&#xff1a;有限…

出租车管理系统java_基于jsp的出租车管理系统-JavaEE实现出租车管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的出租车管理系统, 该项目可用各类java课程设计大作业中, 出租车管理系统的系统架构分为前后台两部分, 最终实现在线上进行出租车管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类出租车管理系统相…

cad常青藤插件_原来还有这么好用的CAD插件,半小时就能做完一张图

作为一名优秀的设计师或者建筑师&#xff0c;如果你没用过逆天的CAD插件&#xff0c;我觉得不行&#xff0c;所以下面小编就给大家推荐几个非常好用的CAD插件&#xff0c;希望可以帮助大家大幅提升工作效率。接下来小编就带大家一起看看吧&#xff01;1、天正建筑天正建筑顾名思…

java main是标识符吗_main方法的认识 、通配符、java的注释、java的符(标识符)【Java基础】...

main方法的认识print()和println()的区别print()打印不换行println()打印并换行通配符\n换行符\t制表符都应用于控制台\n换行\t以表格的形式显示System.out.println("----------英雄排行榜------------");System.out.println("\t|编号\t|名字\t|战力值\t|"…