sql语句优化!

手把手教你用分立元件搭建自举电路:解决高端MOS驱动难题 本文详细介绍了如何用分立元件搭建自举电路,解决高端MOS驱动中的栅源极电压不足问题。通过面包板实验,逐步讲解二极管、电容等关键元件的选型与电路搭建,提供波形调试和常见问题排查方法,帮助工程师提升开关电源和电机驱动等应用的效率与可靠性。 阅读详情


1.不要使用in操作符,这样数据库会进行全表扫描,
推荐方案:在业务密集的SQL当中尽量不采用IN操作符

2.not in 使用not in也不会走索引
推荐方案:用not exists或者(外联结+判断为空)来代替

3<> 操作符(不等于) 使用<>同样不会使用索引,因此对它的处理只会产生全表扫描
推荐方案:用其它相同功能的操作运算代替,如
       a<>0 改为 a>0 or a<0

       a<>’’ 改为 a>’’

4.IS NULL 或IS NOT NULL操作(判断字段是否为空)

判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。
推荐方案:用其它相同功能的操作运算代替,如
       a is not null 改为 a>0 或a>’’等。

5.> 及 < 操作符(大于或小于操作符)

大于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,如一个表有100万记录,一个数值型字段A,30万记录的A=0,30万记录的A=1,39万记录的A=2,1万记录的A=3。那么执行A>2与A>=3的效果就有很大的区别了,因为A>2时ORACLE会先找出为2的记录索引再进行比较,而A>=3时ORACLE则直接找到=3的记录索引。

6.LIKE操作符

LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,如LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘5400%’则会引用范围索引。
可以采用substr(column,1,4)=’5400’

7.UNION操作符

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:
select * from gc_dfys

union

select * from ls_jg_dfys

这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。

推荐方案:采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。

8.SQL书写的影响(针对oracle而言)

同一功能同一性能不同写法SQL的影响

如一个SQL在A程序员写的为

       Select * from zl_yhjbqk

B程序员写的为

       Select * from dlyx.zl_yhjbqk(带表所有者的前缀)

C程序员写的为

       Select * from DLYX.ZLYHJBQK(大写表名)

D程序员写的为

       Select * from DLYX.ZLYHJBQK(中间多了空格)

以上四个SQL在ORACLE分析整理之后产生的结果及执行的时间是一样的,但是从ORACLE共享内存SGA的原理,可以得出ORACLE对每个SQL 都会对其进行一次分析,并且占用共享内存,如果将SQL的字符串及格式写得完全相同则ORACLE只会分析一次,共享内存也只会留下一次的分析结果,这不仅可以减少分析SQL的时间,而且可以减少共享内存重复的信息,ORACLE也可以准确统计SQL的执行频率。

9.WHERE后面的条件顺序影响

WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响,如

Select * from zl_yhjbqk where dy_dj = '1K以下' and xh_bz=1

Select * from zl_yhjbqk where xh_bz=1 and dy_dj = '1K以下'

以上两个SQL中dy_dj及xh_bz两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的时候99%条记录都进行dy_dj及xh_bz的比较,而在进行第二条SQL的时候0.5%条记录都进行dy_dj及xh_bz的比较,以此可以得出第二条SQL的CPU占用率明显比第一条低。

10.查询表顺序的影响

在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉。(注:如果对表进行了统计分析,ORACLE会自动先进小表的链接,再进行大表的链接)
 
 

of_graph_get_remote_port isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ... 阅读详情

相关推荐

别再让CPU干GPU的活了:CST Studio Suite GPU加速深度调优指南(从驱动版本到任务管理器监控)

本文深入探讨了CST Studio Suite的GPU加速深度调优方法,从NVIDIA驱动版本选择到系统级资源管理,再到实时监控与瓶颈诊断技术。通过科学的驱动优化、GPU资源管理策略和高级调优技巧,显著提升仿真效率,特别适合电磁仿真工程师和硬件加速需求的专业用户。

weixin_28740299的博客 135

什么是MySQL的 join 查询

相信大家 MySQL 都用了很久了,各种 join 查询天天都在写,但是 join 查询到底是怎么查的,怎么写才是最正确的,今天我就和大家一起学习探讨一下

Java_LingFeng的博客 443

Python爬虫实战:医院科室排班智能采集系统 - 从零构建合规且高效的医疗信息爬虫(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1269

MySQL的join你真的了解吗!!!

1. 应该使用小表作为驱动表2. 被驱动表关键字段应该建立索引3.被驱动表无法使用索引、数据量很大时,因适当调整join_buffer大小。避免 Buffer Pool 的热数据被淘汰,影响内存命中率。4.MySQL8.0之后版本,已经支持hash join,没有升级的小伙伴赶紧升级把!!!阿根廷加油,梅老板牛逼!!!

qq_48157004的博客 3002

MySQL-10.索引优化和查询优化

理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECTJOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含SELECT 到 FROM之间查询的列。# 删除之前的索引# 创建索引。

weixin_51918722的博客 363

Mysql—索引③:优化篇(不仅仅是索引)

详解索引优化与查询优化SQL),讲解了索引失效的情况,join查询中的概念(驱动表、被驱动表),join查询优化,子查询优化,排序优化,groupby优化,分页limit优化,前缀索引,索引下推

可达鸭的博客 1940

Mysql索引优化实战

建表语句 CREATE TABLE `employees` ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT, `name` VARCHAR ( 24 ) NOT NULL DEFAULT '' COMMENT '姓名', `age` INT ( 11 ) NOT NULL DEFAULT '0' COMMENT '年龄', `position` VARCHAR ( 20 ) NOT NULL DEFAULT '' COMMENT '职位', `hire_time

Promise_J_Z 1174

sql in语句优化_干货:30种SQL语句优化

 - 点击上方“中国统计网”订阅我吧!-在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考。01对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。02应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。03应尽量避免在 whe...

weixin_39531582的博客 1202

干货!SQL性能优化,书写高质量SQL语句

干货!SQL性能优化,书写高质量SQL语句 点点赞 不迷路 写SQL语句的时候我们往往关注的是SQL的执行结果,但是是否真的关注了SQL的执行效率,是否注意了SQL的写法规范? 以下的干货分享是在实际开发过程中总结的,希望对大家有所帮助! 1.limit分页优化 当偏移量特别大时,limit效率会非常低。 SELECT id FROM A LIMIT 1000,10 很快 SELECT id...

JAVA木笙 4439

php怎么优化sql语句,优化一句SQL语句!该怎么解决

优化一句SQL语句SQL codeselect a.id,b.id as mycompid,b.typeid,b.co_end,a.pro_price,a.pro_name as realproname,a.discount_rate,a.bigpic,a.temp_url,b.co_name,c.pro_name,d.city_name,a.begindate,a.modifydate,a.p...

weixin_34246598的博客 180

OracleSQL语句优化(满满干货,建议收藏!)

1. SQL语句执行步骤 语法分析> 语义分析> 视图转换 >表达式转换> 选择优化器 >选择连接方式 >选择连接顺序 >选择数据的搜索路径 >运行“执行计划” 2. 选用适合的Oracle优化器 RULE(基于规则)、 COST(基于成本) 、CHOOSE(选择性) 3. 访问Table的方式 全表扫描 全表扫描就是顺序地访问表中每条记录,ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。 通过ROWID访

wj的博客 5468

sql语句优化php,优化一句SQL语句!该怎么解决

优化一句SQL语句SQL codeselect a.id,b.id as mycompid,b.typeid,b.co_end,a.pro_price,a.pro_name as realproname,a.discount_rate,a.bigpic,a.temp_url,b.co_name,c.pro_name,d.city_name,a.begindate,a.modifydate,a.p...

weixin_31577599的博客 105

3种SQL语句优化方法,测试人必知必会!

对于改变表访问方式,常见的手段是使用索引替代开销较高的全表扫描,但这种方式不是万能的,是有一定的使用前提的,有时候,滥用索引反而会带来较高的性能开销。语句中需要按表中的某列进行排序,此时,可以为该列创建索引,从而达到通过索引扫描代替完成排序需要的全表扫描,达到降低访问开销,缩短执行时间的目的。在对数据库的访问中,排序是一种开销较搞的操作,数据库为了完成排序操作,需要扫描表中的所有记录,之后采取相应的算法对记录进行排序。表是第一个关联的驱动表,该表过滤后的结果集只有24条记录,结果集很小,所以,可以将。

q—qun1150305204的博客 1233

mysql straight join_MySQL基础之STRAIGHT JOIN用法简介

MySQL基础之STRAIGHT JOIN用法简介STRAIGHT_JOIN is similar to JOIN, except that the left table is always read before the right table. This can be used for those (few) cases for which the join optimizer process...

weixin_30341121的博客 375

[索引] 索引失效的几种情况

一、索引失效的几种情况 建立员工记录表staffs(id,name,age,pos,add_time) 给表中name,age,pos字段添加索引(注意三个字段的顺序) alter table staff add index idx_staffs_nameAgePos(name,age,pos) ①最佳左前缀法则 指的是查询从索引的最左前列开始并且不跳过索引中的列 (带头大哥不能死,中间兄弟不能断) (火车头带着车身跑,不能没有火车头,中间也不能缺少一段火车身) 例: 第一种情况,nam

GSON的博客 4642

不会使用索引,导致全表扫描情况

1.使用in操作符 推荐方案:在业务密集的SQL当中尽量不采用IN操作符2.使用not in 推荐方案:用not exists或者(外联结+判断为空)来代替3.使用&lt;&gt; (不等于)操作符  推荐方案:用其它相同功能的操作运算代替,如 a&lt;&gt;0 改为 a&gt;0 or a&lt;04.使用IS NULL 或IS NOT NULL操作(判断字段是否为空) 判断字段是否为空一般...

sofuzi的博客 1651

mysql or union all_MySQL索引优化和in or替换为union all

一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有 20万条。article里面有一个"article_category"字段是与category里的"category_id"字段相对应的。 article表里面已经把 article_category字义为了索引。数据库大小为1.3G。问题描述:执行一个很普通的查询: Selec...

weixin_35848310的博客 361

【转】 【概念】为什么有时全表扫描比通过索引扫描效率更高

【概念】为什么有时全表扫描比通过索引扫描效率更高http://space.itpub.net/519536/viewspace-612715 伟大的Oracle SQL优化器可以判断出在某些情况下,使用全表扫描比使用索引扫描能更快的得到数据结果。有没有想过,她是怎么做到的呢?背后的原理是什么呢?举一个非常好理解的场景(scenario:通过索引读取表中20%的数据)解释一下这个有趣的概

strawbingo的专栏 1633

ZR004Ux数据手册.pdf

ZR004U

ARCGIS国土超级工具集V1.8

ARCGIS国土超级工具集V1.8,包含ARCGIS国土超级工具V1.8插件、按字段提取转换为CAD、CAD转GIS矢量工具、勘界图底图输出工具插件及使用工具集需用到的模板文件。

上一篇: SQL优化-索引
下一篇: 完美卸载.net framework 2.0
elcser
博客等级 码龄19年 14粉丝 28原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值