SQL语句优化方式
- 不要使用*号进行查询操作,使用具体字段.
- 索引
- 在where子句和order by 涉及的字段上合理的添加索引.
- where 子句优化
- 避免在where子句中对null值进行判断,应对字段设置默认值
Select id from t where num is null
可以对null值设置默认值为-1(根据自己的实际情况设置)
判断null可以使用
select id from t where num = -1
- 避免在where子句中使用!= 或者<>操作符.
- 尽量避免where子句中使用or 来连接条件
select id from t where num = 1 or num = 5
/*可以优化为*/
select id from t where num = 1
unicon all
select id form t where num = 5 - in 和not in 也要慎用
/*连续条件*/
select id from t where num in (1,2,3)
/*可以使用 between and */
select id from t where num between 1 and 3
/*更多可以使用exists 代替 in*/
select num from a where num in (select num from t)
/*替换语句*/
select num from a where EXISTS (select num from b where a.num = b.num) - 模糊查询SQL优化
/*正常情况下,百分号在后面可以使用索引*/
select nickname from t where nickname like 'DBA%'
/*百分号在前面,不能使用索引,解决方案.改写sql,添加reverse索引*/
create index idx_t1_name on t1(reverse(name))
select name from t1 where reverse(name) like reverse('%adc');
/*前后都有百分号,这种情况一般不能使用索引.*/
/*1.搜索条件字符串始终在字符串开始的固定位置出现,可以创建函数索进行优化,先创建subStr 函数索引,再使用like 'abc%'示例:*/
create index idx_substr_t1_name on t1 (substr(name,5,10));
select id, name ,name_type from t1 where substr(name, 5,10) like 'abc%';
/*2.搜索条件始终在字符串结尾的某个固定位置出现,可以创建函数组合索引进行优化,先创建reverse + substr 组合函数索引,再使用like reverse '%abc'*/
create index idx_t1_reverse_name on t1(reverse(substr(name,1,length(name)-4))); select id,name,name_type from t1 where reverse(substr(name,1,length(name)-4)) like reverse('%abc') /*3.搜索字符串再不固定位置出现,优化方案,先建立普通索引列,改写sql*/
create index idx_t1_name on t1(name) select id,name,name_type from t1 where name in (select name from t1 where name like '%abc%')- 避免在where子句中对字段的 '=' 左边进行函数,算数,或其他表达式运算
- 不要使用select counut(*) from table ,这样不带任何条件的count会引起全表扫描, 可以使用count(1) 代替
SQL语句优化方式的更多相关文章
- SQL语句优化方式--进阶篇
MYSQL性能 最大数据量 抛开数据量和并发数,谈性能都是扯淡(扯的最疼的那种).Mysql没有限制单表最大记录数,它取决与操作系统对文件大小的限制 文件系统 单文件大小限制 FAT32(采用32位二 ...
- 数据库 基于索引的SQL语句优化之降龙十八掌(转)
一篇挺不错的关于SQL语句优化的文章,因不知原始出处,故未作引用说明! 1 前言 客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急 ...
- MySQL常用SQL语句优化
推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要 ...
- 浅谈mysql配置优化和sql语句优化【转】
做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...
- MySQL基础操作&&常用的SQL技巧&&SQL语句优化
基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t ...
- 关于索引的sql语句优化之降龙十八掌
1 前言 客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连.超时,严重影响业务的正 ...
- Oracle SQL语句优化34条
非常好用的SQL语句优化34条 1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 dri ...
- 提高系统性能——对SQL语句优化的思考
软件在研发的过程中自始至终都在留意着系统的可扩展性.但与此同一时候也在关注着系统的性能,SQL语句作为系统性能的一环不容忽视.从今天開始结合开发的经验,谈一下我对SQL语句优化的理解和认知: 1.在联 ...
- 重新学习MySQL数据库12:从实践sql语句优化开始
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/79394168 本文不堆叠网上海量的sql优化技巧或 ...
随机推荐
- Zookeeper——启动闪退
Zookeeper好久不启动了,昨天项目要用Zookeeper了,我昨天突然启动它,调皮的zk居然害羞不让我看见它,启动不了,一启动就闪退,为啥呢?其实是因为报错了,有错zk启动时就会报错,所以昨 ...
- CSS-01 CSS代码标准和规范
一:代码规范 1.所有的书写都是在英文半角下进行 2.统一用table键进行缩进 3.属性值必须带引号(单引和双引都可以) 4.p,dt,h标签里不能嵌套块属性标签 5.a标签不能嵌套a 二:文件命名 ...
- html中内联元素和块级元素的区别
1.下表列出了内联元素和块级元素的主要区别 html中内联元素和块级元素的区别 块级元素 行内元素 独占一行,默认情况下,其宽度自动填满其父元素宽度 相邻的行内元素会排列在同一行里,直到一行排不下,才 ...
- 2.VUE前端框架学习记录二
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...
- 【串线篇】Mybatis缓存之整合第三方缓存
为什么要用第三方缓存?因为mybatis的缓存机制说白了就是一个map,不够强大.但幸好mybatis有自知之明将其Cache做成了一个接口开放出来,我们可以实现这个接口用第三方专业的缓存框架去自定义 ...
- win 10配置安装iis
站长喜欢本地配置iss调试网站后发布到网上,但是前提是系统得配置好iis.随着Win10的出现,越来越多的人装上了Win10, 但是小编最近发现很多旧版本windows系统用户在升级到windows ...
- filebeat配置详解
从input读取事件源,经过相应解析和处理之后,从output输出到目标存储库(elasticsearch或其他).输入可以从Log.Syslog.Stdin.Redis.UDP.Docker.TCP ...
- scipy与sklearn下载与安装
一.scipy下载与安装 scipy下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv提供各种包whl文件 下载之后放到Scripts文件中 ...
- chromedriver与chrome版本映射表(更新至v2.46)
chromedriver版本 支持的Chrome版本 v2.46 v71-73 v2.45 v70-72 v2.44 v69-71 v2.43 v69-71 v2.42 v68-70 v2.41 v6 ...
- 如何写一个bat文件,让他去执行某一个地方的bat文件
新建一个bat文件,里面编写如下内容:@echo offcall 你bat文件的路径\startup.bat pause --------------------------------------- ...