msyql 优化之五不要
1、尽量不要有空判断的语句,因为空判断将导致全表扫描,而不是索引扫描。
对于空判断这种情况,可以考虑对这个列创建数据库默认值
//空判断将导致全表扫描
select small_id from small where sunshine is null;
//可以考虑在需要经常null判断的列,增加默认值。假设有默认值:空字符串
select small_id from small where sunshine ="";
2、尽量不要使用不等于条件,因为,这会导致全表扫描
对于不等于这种情况,考虑改为范围查询解决
//不等于条件 将导致全表扫描
select sunshine from small where small_id <> 18;
//可改为范围查询解决。假设18已经是最大值了
select sunshine from small where small_id < 18
3、尽量不要使用or条件,因为,这会导致全表扫描
对于or这种情况,可以改为 分别查询,然后 union all
//or条件,将导致全部扫描
select sunshine from small where small_id = 6 or small_id = 8;
//改为分别查询,然后 union all
select sunshine from small where small_id = 6
union all
select sunshine from small where small_id = 8;
4、尽量不要使用左右模糊查询,因为,这会导致全表扫描
对于左右模糊查询的情况,试着改为右侧模糊查询,这样是可以索引查找的
//左右模糊查询,将导致全表扫描
select small_id from small where sunshine like '%fun%';
//改为右侧模糊查询
select small_id from small where sunshine like 'fun%';
5、尽量不要使用in条件,因为,这会导致全表扫描,宜用exists代替
//in查询,将导致全表扫描
select sunshine from small where small_id in (select sun_id from sun where index = "shine");
//改为exists
select sunshine from small where small_id exists (select sun_id from sun where index ="shine")
msyql 优化之五不要的更多相关文章
- mysql实战优化之五: 更新/插入优化 sql优化
通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作).当读取者完成对表的操作的时候,锁就会 ...
- 揭秘重度MMORPG手游后台性能优化方案
本文节选自<2018腾讯移动游戏技术评审标准与实践案例>手册,由腾讯互娱工程师王杰分享<仙剑奇侠传online>项目中游戏后台的优化经验,深度解析寻路算法.视野管理.内存优化. ...
- Hadoop 2.x从零基础到挑战百万年薪第一季
鉴于目前大数据Hadoop 2.x被企业广泛使用,在实际的企业项目中需要更加深入的灵活运用,并且Hadoop 2.x是大数据平台处理 的框架的基石,尤其在海量数据的存储HDFS.分布式资源管理和任务调 ...
- Java中高级面试题
一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...
- Java面试题——中级(上)
List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...
- java中级或者高级面试题分享
一. 基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问C ...
- Java高级面试题
一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...
- Java中级面试题——(上)
List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...
- Java中高级面试题整理
一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...
随机推荐
- UOJ#48最大矩形面积
题面 这是一道标准的单调栈的题目,但是由于题目的个例性,该题对于前后两数等于的情况并无额外处理,so也确实是让这题简单了一点 也没什么好说的直接上代码吧 #include<iostream> ...
- [转帖]SUN/Oracle JDK还是OpenJDK?
你安装的是 https://www.cnblogs.com/shoufeng/p/9719995.html 目录 1 如何查看你安装的JDK版本 1.1 要用到的命令行工具 1.2 查看JDK的版本 ...
- Git介绍、安装、命令和实战
一.Git介绍 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 二.Git安装(Mac系统) 在Git官网下载安装包双击直接安装 在终端输入git来检测Git ...
- Luogu P4823 [TJOI2013]拯救小矮人
题目 \(n^2\)的dp已经成为辣鸡做法了,%%%wch. 首先一个结论:\(a+b\)小的人在上. 这个东西我们有三种方法解决证明: 1.感性理解,\(a+b\)越大的人逃生能力越强,放在下面就越 ...
- [.net core]11.异常页
.net core中的异常页很重要 因为可以查看异常的堆栈信息, 请求的参数(如果有),cookie, http头 帮助我们快速的定位问题 .net core web app 默认开启了异常页,但是 ...
- 剑指offer-连续子数组的最大和-数组-python
题目描述 例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止). 给一个数组,返回它的最大连续子序列的和 思路:动态规划 # -*- coding:u ...
- 将div的内容生成清晰的PDF、高清PDF
//需要引入html2canvas.js.jquery.js文件 html: <button type="button" class="btn btn-primar ...
- vue项目--vuex状态管理器
本文取之官网和其他文章结合自己的理解用简单化的语言表达.用于自己的笔记记录,也希望能帮到其他小伙伴理解,学习更多的前端知识. Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态 ...
- jQuery改变元素class属性
//去掉class属性 $(this).parent('li').removeClass("prev_selected"); //去掉同兄弟的class属性. $(this).pa ...
- hier - 文件系统描述
DESCRIPTION 描述 一个典型的Linux系统具有以下几个目录: / 根目录,是所有目录树开始的地方. /bin 此目录下包括了单用户方式及系统启动或修复所用到的所有执行程序. /boot 包 ...