今日一学,sql优化,创建索引的优缺点
收藏了,但是不打开,久而久之就忘了,今日一学!所谓是好记性不如烂键盘。
** 2024Java offer收割指南 **
sql优化
尽量避免使用 select * ,返回无用的字段会降低效率。优化方式:只能使用具体的字段代替 select 具体字段,只返回使用到的字段。(虽然我经常select * 但是一个表字段非常多,那就慢很多,特别是查多数据的时候。为什么一个表那么多字段呢?等你接手遗留项目就知道了)
尽量避免使用 in 和 not in,会导致数据库引擎放弃索引进行全表扫描。优化方
式:可以用 exists,join代替。(正常公司数据量都不大,所以我也经常用in,甚至查id我都用in,为什么会影响性能呢,应该是当其中包含 NULL 值时,优化器可能会认为全表扫描比使用索引更有效)尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描。优化方式:尽量在字段后面使用模糊查询。(这个不知道的罚你回去写1000行sql)
尽量避免进行 null 值的判断,会导致数据库引擎放弃索引进行全表扫描。优化方式:可以给字段添加默认值 0,对 0 值进行判断。(你看看,又是null值)
索引
- 索引的实现通常使用 B树及其变种 B+树(2者区别可以看看,不难理解,面对面试官又能说一波)。
- 索引的作用:协助快速查询,可以保证数据库表中每一行数据的唯一性。可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
- 索引的代价:
- 是增加了数据库的存储空间(你都说用B+的数据结构,那自然要把结构给存下来,不是吗);
- 是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)
- 那把所有字段都定为索引不就好啦?(缺点你是一点都不看)
- 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度
- 创建索引的原则
- 最左前缀匹配原则(一直向右匹配直到遇到范围查询就停止匹配)
- =和 in 可以乱序(建立索引是可以任意顺序的,mysql 的查询优化器会帮你优化成索引可以识别的形式)(可以偷偷去学习下sql语句的执行过程)
- 尽量选择区分度高的列作为索引
- 索引列不能参与计算
- 尽量的扩展索引,不要新建索引(如 a->(a,b)只需要修改原来的索引,注意:数据量太大,创建索引是需要时间的,宕不宕机就看你了)
- 选择唯一性索引(id)
- 为经常需要排序、分组和联合操作的字段建立索引
- 为常作为查询条件的字段建立索引
- 删除不再使用或者很少使用的索引
看完就当加深下记忆,面试时候继续吹
今日一学,sql优化,创建索引的优缺点的更多相关文章
- SQL语句-创建索引
语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100 GO USE 库名GO IF EXISTS (SELECT * FRO ...
- SQL Server创建索引
原文:SQL Server创建索引 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的 ...
- SQL Server 创建索引方法
转自 <SQL Server 创建索引的 5 种方法> 地址:https://www.cnblogs.com/JiangLe/p/4007091.html 前期准备: create tab ...
- 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_206 举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种"指南"和" ...
- SQL Server查询性能优化——创建索引原则(一)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页 就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索 ...
- SQL Server 查询性能优化——创建索引原则(二)
三:索引的建立原则 一般来说,建立索引要看数据使用的场景,换句话来说哪些访问数据的SQL语句是常用的,而这些语句是否因为缺少索引(也有可能是索引过多)变的效率低下.但绝不是所有的SQL语句都要建立索引 ...
- SQL Server 查询性能优化——创建索引原则(一)(转载)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- SQL Server 查询性能优化——创建索引原则(一)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- SQL Server 查询性能优化——创建索引原则
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- SQL Server创建索引(转)
什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...
随机推荐
- 09-canvas绘制坐标系
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 如何实现基于Cortex-A9 的UART裸机驱动
前言 Uart在一个嵌入式系统中是一个非常重要的模块,他承担了CPU与用户交互的桥梁.用户输入信息给程序.CPU要打印一些信息给终端都要依赖UART. 本文将以Exynos4412的UART控制器为基 ...
- kubernetes批量删除evicted状态pod
#!/bin/bash # get namespace namespaces=`kubectl get pod -A | grep -i "evicted" | awk '{pri ...
- 自签名证书实现浏览器IP证书访问
创建文件夹 mkdir ssl cd ssl #IP.2 改成自己电脑的IP地址或服务器IP vi ext.ext keyUsage = nonRepudiation, digitalSignatur ...
- Go plan9 汇编:内存对齐和递归
Go plan9 汇编系列文章: Go plan9 汇编: 打通应用到底层的任督二脉 Go plan9 汇编:手写汇编 Go plan9 汇编:说透函数栈 0. 前言 在 Go plan9 汇编系列文 ...
- 深入理解Argo CD工作原理
1. ArgoCD 的架构 ArgoCD 是一个 Kubernetes 原生的持续交付工具,它通过监控 Git 仓库中的应用定义来自动部署应用到 Kubernetes 集群.其核心架构由以下几个关键组 ...
- 中文关键字检索分析-导出到csv或者excel-多文件或文件夹-使用python和asyncio和pandas的dataframe
1.02版本 把原来的tab一个个拼接成文件输出,改成pandas的dataframe 使用asyncio库来使用协程,但是测试下来速度好像是差不多的.可能速度太快了,没能很好的测出来差异. 原来的最 ...
- vivo 全链路多版本开发测试环境落地实践
作者:来自 vivo 互联网研发效能团队- Wang Kang 测试环境全链路多版本部署,解决多测试环境资源争抢等问题. 一.背景介绍 软件系统中全链路指的是从用户请求发起,到最终返回响应的整个过程中 ...
- JAVAEE——MySQL安装
一.下载MySQL(两种方式) 1.官网下载 官网下载地址:https://www.mysql.com/downloads 2.点击下载(版本:mysql-8.0.28-winx64) 链接:ht ...
- chatGPT能做职业规划?看完之后发现3年软测白做了!
"每天都是重复.单调的工作,收入不理想,想跳槽无力,学习又没有动力和方向,不知道未来的发展在哪里,甚至想转行·····" 做测试久了,很多人都有诸如此类的疑惑,不想一直停留在测试需 ...