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优化技巧或 ...
随机推荐
- 浅谈XML涉及到的常见技术(编写+解析)
xml:即可扩展标记语言,用于描述关系型数据,也经常用作软件的配置文件: 1,编写xml文档一般基于一个约束文档,该文档用于规定xml的书写规范,常用的约束技术有 (1)XML ...
- SecureCRT远程ssh linux服务器,利用X11本地图形化wireshark抓包,
平时学习抓包,使用wireshark很方便,直接图形化界面抓包,近期项目中遇到了需要通过SecureCRT ssh到linux服务器上面,还要在抓包, 1.简单使用网络数据包截获分析工具tcpdump ...
- vim gdb使用
vim 8.0以上 :packadd termdebug :termdebug shell gdb中运行help all查看所有命令帮助 显示汇编窗口 layout asm
- 通用的规则匹配算法(原创)(java+.net)
1.java里可以使用Spring的 Spel或者Google的Aviator 如果使用 Aviator 则添加以下依赖 <dependency> <groupId>com.g ...
- python集合set,交集,并集,差集,对称差集,子集和超集
python集合set,交集,并集,差集,对称差集,子集和超集 x = {1, 2, 3, 4} y = {2, 4, 5, 6} # 交集(取x中与y中相同部分) print(x.intersect ...
- 解决IDEA项目名称无下标蓝色小方块
点击下图中 + 号,引入该工程的pom.xml即可 .
- gps位置坐标转百度坐标
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- ElasticSearch1.7 java api
package cn.xdf.wlyy.solr.utils; import java.util.ArrayList;import java.util.HashMap;import java.util ...
- HIbernate 查询拼接参数
public List<TrailTestModel> findByEid(List<String> trailids, String eid) { // TODO Auto- ...
- 唐太宗灵州勒石 TANGTAIZONGLINZHOULESHI
唐太宗灵州勒石 唐贞观二十年(646年),在唐军和回纥部落联合打败突厥薛延陀部后,原归附薛延陀部的回纥.拔野古.斛薛等部族,越过贺兰山,进入了今宁夏的银川.吴忠一带地区.这些总族向唐朝提出,愿意臣服唐 ...