当前位置: 首页 > news >正文

MySQL中的索引——适合创建索引的情况

1.适合创建索引的情况

1、字段的数值有唯一性的限制

image-20220808223333115

2、频繁作为 WHERE 查询条件的字段

某个字段在 SELECT 语句的 WHERE 条件中经常被使用到,那么就需要给这个字段创建索引了。尤其是在数据量大的情况下,创建普通索引就可以大幅提升数据查询的效率。

比如 student_info 数据表(含 100 万条数据),假设我们想要查询 student_id=123110 的用户信息。

①查看student_info表中的索引

可以看出,我们没有对student_id字段创建索引。

②进行如下查询,耗时220ms

③添加索引

alter table student_info add index idx_sid(student_id);

④再查询。耗时0ms。性能提升很大!

3、经常 GROUP BY 和 ORDER BY 的列

        索引其实就是让数据按照某种顺序进行存储或检索。当我们使用 GROUP BY 对数据进行分组查询,或者使用 ORDER BY 对数据进行排序的时候,如果 对分组或者排序的字段建立索引,本身索引的数据就已经排好序了,进行分组查询和排序操作性能不好吗?另外,如果待排序的列有多个,那么可以在这些列上建立 组合索引

使用GROUP BYORDER BY,先看看不加索引的情况:

没有添加索引,大概执行时间900ms

加上索引

SELECT student_id,COUNT(*) AS num FROM student_info
GROUP BY student_id
LIMIT 100;

执行时间只要40ms,大概相差20多倍!


再考虑复杂一点的情况,group by和order by一起使用

        这是只给student_id和create_time两列单独添加单列索引的情况。可以看到查询速度很慢,要5s多。

ALTER TABLE student_info ADD INDEX idx_sid_cre_time(student_id,create_time DESC);

添加联合索引

使用联合索引只需要耗时0.25ms!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • rknn yolo系列之量化前预处理,解决量化精度低以及出现类似未作nms的很多框子的问题
  • 在js中实现两个对象合并,若重复以第一个对象中的数据为准
  • 【机器学习】卷积神经网络简介
  • Android控件(示例)
  • 生成iOS LaunchImage脚本
  • “服务之巅:Spring Cloud中SLA监控与管理的艺术“
  • 【JavaEE】初步认识多线程
  • 【论文泛读】ZKML: An Optimizing System for ML Inference in Zero-Knowledge Proofs
  • springboot自定义starter
  • 【漏洞复现】某赛通数据泄露防护(DLP)系统 NetSecConfigAjax SQL注入漏洞
  • docker docker-compose创建容器并运行时发现redis.conf: Is a directory
  • springboot+neo4j的demo
  • 【论文分享】基于非参数方法和无所不在的兴趣点数据的子中心识别——以284个中国
  • tianai-captcha SpringBoot 行为验证码 支持滑动、旋转、文字点选等
  • 线程池概述
  • [译]如何构建服务器端web组件,为何要构建?
  • __proto__ 和 prototype的关系
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • gitlab-ci配置详解(一)
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java基本数据类型之Number
  • jdbc就是这么简单
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Quartz初级教程
  • redis学习笔记(三):列表、集合、有序集合
  • sessionStorage和localStorage
  • SpringBoot几种定时任务的实现方式
  • Vue2.0 实现互斥
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 反思总结然后整装待发
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 官方解决所有 npm 全局安装权限问题
  • 坑!为什么View.startAnimation不起作用?
  • 配置 PM2 实现代码自动发布
  • 如何编写一个可升级的智能合约
  • 设计模式走一遍---观察者模式
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 线性表及其算法(java实现)
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 移动端高清、多屏适配方案
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (~_~)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)opengl函数加载和错误处理
  • (转)【Hibernate总结系列】使用举例
  • (转)树状数组
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET MVC 验证码
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET 事件模型教程(二)
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)