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 ...
随机推荐
- [深度概念]·Attention Model(注意力模型)学习笔记
此文源自一个博客,笔者用黑体做了注释与解读,方便自己和大家深入理解Attention model,写的不对地方欢迎批评指正.. 1.Attention Model 概述 深度学习里的Attention ...
- 【计算机视觉】ViBe - a powerful technique for background detection and subtraction in video sequences
转自:http://blog.csdn.net/stellar0/article/details/8777283 作者:星zai ViBe算法:ViBe - a powerful technique ...
- 软件设计分为结构化设计(SD)
软件设计分为结构化设计(SD)与面向对象设计(OOD). 其中结构化设计SD是一种面向数据流的方法,它以SRS(软件需求规格说明书)和SA(结构化分析)阶段所产生的和数据字典等文档为基础,是一个自顶向 ...
- SpringBoot_01
一.初识springboot 个人总结:springboot是一个开发更加便捷的spring的技术框架,通过引入启动器便可以快捷的让spring框架和其他框架进行整合, springboot很容易上手 ...
- Luogu P2501 [HAOI2006]数字序列
题目 首先把\(a\)改成严格单调上升等于把\(a_i-i\)改成单调不降. 那么第一问可以直接做LIS,答案就是\(n-\)LIS的长度. 同时我们记录一下序列中每个位置结尾的LIS长度. 第二问我 ...
- 刷机,twrp,安装xposed
首先明白几个名词: recovery模式,类似于pc端的PE系统,每个手机都有自带的rec,但不好用,最好自己刷一个,现在市面最好用的是twrp fastboot模式,比recovery更底层,进入f ...
- centos7下apache启动报错记录
http重启httpd发生错误,后面按照提示执行systemctl status httpd.service命令 按照提示,继续执行journalctl -xe 这里显示了详细的错误信息,并且给出了解 ...
- Centos7搭建FTP服务
1.安装 vsftpd [root@CentOS ftp]# yum -y install vsftpd2.启动 vsftpd 服务 [root@CentOS ~]# systemctl star ...
- 2019icpc徐州网络赛
A Who is better? 题意 excrt+斐波那契博弈 分析 Java的BigInteger对象默认为null,不能直接比较. 代码 import java.math.BigInteger; ...
- 开发跨平台应用解决方案-uniapp 真心不错,支持一波
uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.微信小程序等多个平台. 用了mui,H5+一年多了,感觉dcloud 最近推出的 ...