索引优化分析(一)

【MySQL篇】MySQL索引优化分析与实战(一) 1. 索引下推优化详解 2. MySQL优化器索引选择研究 3. 索引优化Order by 与Group by 4. Using filesort文件排序详解 5. 索引设计原则与实战 阅读详情

一、分析SQL语句查询慢、等待时间长的原因

(1)查询的sql语句写的烂

(2)索引失效(单值索引、复合索引)

(3)关联查询太多join(即关联了太多的表,设计缺陷或需求需要)

(4)服务器调优及各个参数设置(缓冲、线程数等)

二、常见通用的 join 查询

(1)Mysql执行sql语句顺序

SELECT                                            6
    *|{[DISTINCT] column|expression [alias],...}  7
FROM table1                                       1
inner join table2 on join_condition               2                      
[WHERE condition(s)]                              3
[GROUP BY column|group_by_expression]             4
[HAVING group_condition]                          5
[ORDER BY column1,column2... asc|desc]            8
limit start,size                                  10

(2)七种常见的join查询

三、索引的简介

1、什么是索引 

      Mysql官方定义索引为:索引是帮助mysql高效获取数据的数据结构,其本质为》索引是排好序的快速查找数据结构。在mysql数据库中,索引也是一张表,该表中存储着索引的值和这个值的数据所在行的物理地址,使用索引后可以不用扫描全表来定位某行的数据,而是通过索引表来找到该行数据对应的物理地址,再根据该物理地址快速定位到该行数据。

       在该表中,存在索引的情况下,新增、修改或删除时,该涉及到数据的物理地址(索引值)更改,对该数据按照一定的规则排列组合,形成新的数据结构,则增、修、改时,操作慢,根据特定算法查询快,所以说,并非索引越多越好。

2、索引的优缺点

 优点:

          (1)提高数据检索的效率,降低数据库的IO成本

          (2)通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

缺点:

          (1)索引也是一张表,保存着该数据的物理地址、索引值等信息,也要占用空间(磁盘空间)

          (2)降低更新表的速度,如对表进行insert、update或delete操作。因为更新表时,mysql不仅保存数据,还要保存、修改索引信息,调整数据的排序位置

3、索引的分类

(1)单值索引:一个索引只包含单个列,但一个表中可以有多个单列索引(如:唯一索引、主键索引等)。

(2)组合索引:即一个索引包含多个列

创建索引:
	create index index_name on table_name (column1(length),column2(length)...)
修改索引:
	alter table table_name add index index_name on (column1(length),column2(length)...)
删除索引:
	drop index index_name on table_name
查看索引:
	show index from table_name

4、索引的结构(存储引擎实现)

(1)B-Tree索引:在MyISAM和InnoDB存储引擎中的实现不同,默认索引

(2)Hash索引:Mermory默认使用的是hash索引

(3)full-text全文索引

(4)R-Tree索引

5、哪些情况下适合创建索引

(1)主键自动建立唯一索引

(2)频繁做为查询条件的字段应该创建索引

(3)查询中与其他表关联的字段,外键关系建立索引

(4)频繁更新的字段不适合创建索引

(5)where条件用不到的字段不创建索引

(6)单键/组合索引的选择(在高并发下倾向创建组合索引)

(7)查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度

(8)查询中统计或分组的字段

6、哪些情况不适合创建索引

(1)表记录太少

(2)经常增删改的表:因为提高了查询的速度,同时却会降低更新表的速度,如对表进行insert、update或delete时,mysql不仅要保存数据,还要保存索引文件等信息

(3)数据重复且分布平均的表字段,因为某个数据包含许多重复的内容,为它建立索引就没有太大的实际效果·

《MySQL》第五篇 索引优化场景分析一 一. 最左前缀原则和索引下推 二. MySQL如何选择合适的索引 一. 不同场景索引使用情况分析 示例表: CREATE TABLE `t_employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL D 阅读详情

相关推荐

ArcMap新手必看:Shape属性中的点ZM值到底是什么?如何快速处理

本文深入解析ArcMap中Shape属性中的点ZM值,揭示其在GIS数据中的隐藏维度作用,包括Z值(高程值)和M值(测量值)。针对ZM值可能引发的服务发布问题,提供三种高效处理方案,帮助新手快速掌握数据导入时的ZM值管控策略及精准去除方法。

weixin_42561476的博客 432

MySQL之索引失效情况

文章目录1 MySQL索引1.1 简介1.1.1 索引创建1.1.2 索引类型1.1.3 索引优缺点1.2 SQL优化1.2.1 查看执行计划1.2.2 show profile分析1.2.3 trace2 索引失效2.1 问题引入2.2 准备工作2.2.1 创建user表2.2.2 插入数据2.2.3 查看数据库版本2.3 联合索引2.3.1 联合索引中索引有效2.3.2 联合索引中索引失效2.4 select *2.5 索引列上有计算2.6 索引列用了函数2.7 字段类型不同2.8 like左边包含%2

上善若泪 8823

TwinCAT 3 实战指南:从系统配置到高级运动控制

本文详细介绍了TwinCAT 3工业自动化控制平台的实战应用,从系统配置、PLC编程到EtherCAT总线配置和高级运动控制。通过倍福(Beckhoff)的TwinCAT 3平台,工程师可以高效实现复杂的工业自动化任务,包括运动控制、PLC编程等。文章还提供了常见问题排查和性能优化技巧,帮助用户提升系统稳定性和实时性。

weixin_30831529的博客 305

MySQL之索引学习——索引(一)

本文主要总结MySQL索引的一些知识点.

技术知识分享 607

tkinter使用label视频播放

tkinter是python的界面开发包 使用tkinter显示视频流的一个办法是使用label来逐帧显示图片。 from Tkinter import * from PIL import ImageTk, Image import cv2 root = Tk() # Create a frame app = Frame(root, bg="white") app.grid() # Create a label in the frame lmian = Label(app) lmain.grid(

六十英里的专栏 5527

mongodb在游戏开发领域的优势

目前游戏服务器使用mysql作为数据库的较多,然而,使用mongodb来作为存储层,在某些方面比mysql更为方便和适合。

littleschemer的博客 1700

索引优化分析

SQL执行时间长的可能原因 查询语句写的差 索引失效 关联查询太多(不得已的客户需求) 服务器资源限制(如磁盘空间满了)

weixin_32196893的博客 203

Vue3 - Element Plus 日期选择器 el-date-picker,设置 type=week 变成周选择器后,将选择周时修改为 “周一至周日“ 为一组范围(详细示例代码,新手小白秒会)

vue3,element-plus,DatePicker日期选择器,el-date-picker,周,type=week,周选择器,日期选择器week怎么拿到具体的时间范围,如何取week周选择器的value值,format如何设置,时间选择器按周选择时展示具体日期范围,vue3elementPlus日期选择器选择一周7天的数据格式怎么拿到,el-date-picker设置type等于week后怎么设置format属性,format和value-format怎么设置,范围选择器周,一周,选择一周7天时间

🏆 前端领域优质创作者 1万+

高性能的Mysql读书笔记系列之五(创建高性能的索引)

前言: 正文: 总结:

jdk_wangtaida的博客 2095

Allegro 中复制一部分PCB到另一个PCB中去

引言:自从学了allegro后,我每天快乐地再拉线,一开心肯定出事情。不料今天一高兴,把本来在5层的铜皮直接在4层画起来了。不过,幸好我知道换层,才省了又要画铜皮的时间。好了,开干,如果要将其他层的铜皮换到想要换到的层上,就需要这个命令。

tianpu2320959696的博客 971

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

前程算法屋的博客 1025

聚簇索引和非聚簇索引

mysql索引

weixin_47993432的博客 345

【推荐100个unity插件】性能极高的逼真爆炸、火焰和烟雾效果——UNI VFX

这是一篇关于Unity中高性能GPU粒子特效插件UNI VFX的使用指南。文章介绍了该插件提供逼真的爆炸、火焰和烟雾效果,支持URP和HDRP渲染管线。主要内容包括:插件安装方法(需预先安装Visual Effect Graph和Shader Graph包)、事件系统使用方法(如create/loop/stop等事件控制)、特效分类(自动结束型和持续型特效)、检视面板配置技巧以及性能优化建议(特别提醒灯光特效对性能的影响较大)。文末还推荐了多个Unity开发相关的专栏内容。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1492

【mysql索引及优化】一、mysql性能分析及索引

一、性能分析 1.慢查询日志 Mysql的慢查询日志默认没有开启,需要在mysql配置文件(etc/my.cnf)中配置如下信息: //开启mysql慢查询日志查询开关 slow_query_log=1 //设置慢日志的时间为2秒,SQL语句时间超过2秒,就会视为慢查询,记录慢查询日志 long_query_time=2 2.profile性能分析 show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。通过have_profiling参数,能够查看到当前MySQ

weixin_49051190的博客 1004

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Mysql索引优化策略一--主要针对索引使用场景分析

Mysql索引优化策略一--主要针对索引使用场景分析

weixin_44795847的博客 505

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL索引优化(一)性能分析-explain

一、什么情况下需要创建索引 主键自动建立唯一索引 频繁作为查询条件的字段应该创建索引 查询中与其它表关联的字段,外键关系建立索引 频繁更新的字段不适合创建索引,每次更新不单单是更新了记录还会更新索引 Where条件里用不到的字段不创建索引 单键/组合索引的选择问题,who? (在高并发下倾向创建组合索引) 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度 查询中统计或者分组字段 二、什么情况下不要创建索引 表记录太少 经常增删改查的表 数据重复且分布平均的表字段,因此应该只为最经常查询和最

leonsccott的博客 238

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

从慢查询实例中分析mysql索引及查询优化(一)

写这个博客也算是阴差阳错。上次做了个需求:退款列表导出(可以翻翻之前的博客,有写)。虽然事情过了那么久,现在我还是想要吐槽下,这个需求是真的坑。。 这个博客大概是这么分布的:第一篇就根据实际场景来分析下索引及查询上的优化;第二篇和第三篇(如果我还能写得出来第三篇的话。。)来系统地整理下mysql的索引及查询的优化。 ———————————————— 接下来是正文 ———————————————...

Olive的博客 1169

Day161.索引优化分析①[慢SQL、Join查询、索引简介、Explain性能分析] -MySql高级

第 2 章 索引优化分析 1、慢 SQL 性能下降、 SQL 慢、执行时间长、等待时间长的原因分析 查询语句写的烂 索引失效: 单值索引:在user表中给name属性建个索引,create index idx_user_name on user(name) 复合索引:在user表中给name、email属性建个索引,create index idx_user_nameEmail on user(name,email) 关联查询太多join(设计缺陷或不得已的需求) 服务器调优及各个参数设置(缓冲

阿昌爱Java 788

mysql高级,mysql优化,数据库优化(索引优化分析一)

1 性能下降、执行时间长、等待时间长 2 常见的Jion查询 3 索引是什么? Where和order by 4 索引优势和劣势 5 索引分类 6 索引结构 7 哪些情况下建立索引 8 哪些情况下不需要建立索引 9 性能分析 id select_type table type possible_keys和keys ...

weixin_43747748的博客 98

MySQL索引优化实战(一)常用优化、Trace工具SQL执行分析、陌陌App索引创建实战

示例表: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` timestamp

沮丧的南瓜 500

MySQL高级---索引优化分析(Explain性能分析 一)

1、概念 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 2、用法: Explain+SQL语句。 3、Explain字段解释 Explain执行后返回的信息: id 有三种情况 1、id相同,执行顺序由上至下。 id相同,执行顺序从上到下,搭配table列进行观察可知,执行顺序为t1->t3-...

我是太阳 2万+

3、mysql索引优化一:Explain关键字分析

作为一个Java开发,在我们日常工作中,对于mysql的使用中涉及最多的恐怕就是写SQL了,一定遇到过sql执行慢的问题,那么SQL优化工作就显得格外重要。有了对mysql执行过程以及索引实现原理了解的基础,如果不熟悉可以参考之前两篇博客:《mysql架构组成》、《mysql索引实现原理》,接下来我会就日常工作中一些常见的SQL使用场景进行优化分析讲解,不过在讲解之前,需要先熟悉Explain关键字的使用,Explain是mysql为我们提供的一个非常重要的SQL分析工具:Explain关键字,借助它我们能

jb84006的博客 1213

数据库高级知识——索引优化分析(一)

文章目录1.SQL性能下降原因2.常见通用的Join查询2.1 SQL执行顺序2.2 Join图3.索引简介3.1 索引是什么3.2 索引优势3.3 索引劣势3.4 索引分类3.5 mysql索引结构3.6 哪些情况需要创建索引 1.SQL性能下降原因 查询数据过多 能不能拆,条件过滤尽量少 关联了太多的表,太多join join 原理。用 A 表的每一条数据 扫描 B表的所有数据。所以尽量先过滤。 没有利用到索引 索引针对 列 建索引。但并不可能每一列都建索引 索引并非越多越好。当数据更新了,索引会

zxr916的博客 198

物理查询优化(一):索引的使用(案例分析)

从上述 查询执行计划来看,尽管连接条件 a1 = b1 中的 a1 列和 b1 列都是索引列,但在表 a 中使用了顺序扫描,在表 b 中使用了索引扫描。从查询执行计划来看,a1 和 b1 都走了索引,能走索引的原因是在连接条件中,出现了 a1 = 1 条件,使得查询优化器可以根据 ”常量传递“ 优化技术推知 b1 = 1,所以在表 a 和 b 上可以各自使用索引扫描。9)对表做查询,有索引列对象作为过滤条件,操作符是范围操作符 ,可做索引扫描(PG 不可做索引扫描),且可走 ICP下推;

热爱数据库的小胖 758

mysql高级----索引优化(一):索引分析

一、单表1、表结构2、案例分析显示表的索引信息:show index from 表名重新分析:仍然用了文件排序,因为comments范围查询,会导致索引失效将where条件改成comments=1后,分析结果如下:相当于给定已知组合索引中的两个列,求未知的另外一个列时,可以用索引求得。显示表的索引信息:show index from 表名分析结果:此时排序就不会用到额外的 [文件排序]二、两张表1...

阿官 509

由浅入深探究mysql索引结构原理、性能分析与优化(一)

第一部分:基础知识: 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构。笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里,不用一页一页查阅找出需要的资料。关键字index ------------------------------------------------...

chuangangliu8460的博客 95
上一篇: Mysql数据库的常用DML、DDL、DCL命令
下一篇: 索引优化分析(二)
Array*
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值