本文实例总结了常用SQL语句优化技巧。分享给大家供大家参考,具体如下:

除了建立索引之外,保持良好的SQL语句编写习惯将会降低SQL性能问题发生。
①通过变量的方式来设置参数
好:
stringsql = "select * from people p where p.id = ? ";
坏:
stringsql = "select * from people p where p.id = "+id;
数据库的SQL文解析和执行计划会保存在缓存中,但是SQL文只要有变化,就得重新解析。
“…where p.id = ”+id的方式在id值发生改变时需要重新解析,这会耗费时间。
②不要使用select *
好:
stringsql = "select people_name,pepole_age from people ";
坏:
stringsql = "select * from people ";
使用select *的话会增加解析的时间,另外会把不需要的数据也给查询出来,数据传输也是耗费时间的,
比如text类型的字段通常用来保存一些内容比较繁杂的东西,如果使用select *则会把该字段也查询出来。
③谨慎使用模糊查询
好:
stringsql = "select * from people p where p.id like 'parm1%' ";
坏:
stringsql = "select * from people p where p.id like '%parm1%' ";
当模糊匹配以%开头时,该列索引将失效,若不以%开头,该列索引有效。
④不要使用列号
好:
stringsql = "select people_name,pepole_age from people order by name,age";
坏:
stringsql = "select people_name,pepole_age from people order by 6,8";
使用列号的话,将会增加不必要的解析时间。
⑤优先使用UNION ALL,避免使用UNION
好:
stringsql = "select name from student union all select name from teacher";
坏:
stringsql = "select name from student union select name from teacher";
UNION 因为会将各查询子集的记录做比较,故比起UNION ALL ,通常速度都会慢上许多。一般来说,如果使用UNION ALL能满足要求的话,务必使用UNION ALL。还有一种情况,如果业务上能够确保不会出现重复记录。
⑥在where语句或者order by语句中避免对索引字段进行计算操作
好:
stringsql = "select people_name,pepole_age from people where create_date=date1 ";
坏:
stringsql = "select people_name,pepole_age from people where trunc(create_date)=date1";
当在索引列上进行操作之后,索引将会失效。正确做法应该是将值计算好再传入进来。
⑦使用not exist代替not in
好:
stringsql = "select * from orders where customer_name not exist (select customer_name from customer)";
坏:
stringsql = "select * from orders where customer_name not in(select customer_name from customer)";
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。
⑧ exist和in的区别
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。因此,in用到的是外表的索引, exists用到的是内表的索引。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
2:
select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
⑨避免在索引列上做如下操作:
◆避免在索引字段上使用<>,!=
◆避免在索引列上使用IS NULL和IS NOT NULL
◆避免在索引列上出现数据类型转换(比如某字段是String类型,参数传入时是int类型)
当在索引列上使用如上操作时,索引将会失效,造*表扫描。
⑩复杂操作可以考虑适当拆成几步
有时候会有通过一个SQL语句来实现复杂业务的例子出现,为了实现复杂的业务,嵌套多级子查询。造成SQL性能问题。对于这种情况可以考虑拆分SQL,通过多个SQL语句实现,或者把部分程序能完成的工作交给程序完成。
PS:这里再为大家推荐2款SQL在线工具供大家参考使用:
SQL在线压缩/格式化工具:
http://tools./code/sql_format_compress
sql代码在线格式化美化工具:
http://tools./code/sqlcodeformat
希望本文所述对大家数据库程序设计有所帮助。
# SQL语句
# 优化
# 浅谈MySQL中优化sql语句查询常用的30种方法
# sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
# SQLServer 优化SQL语句 in 和not in的替代方案
# SQL SERVER 的SQL语句优化方式小结
# MySQL SQL语句优化的10条建议
# Mysql查询最近一条记录的sql语句(优化篇)
# SQL Server中的SQL语句优化与效率问题
# SQL语句优化方法30例(推荐)
# 如何优化SQL语句的心得浅谈
# 你真的知道怎么优化SQL吗
# 将会
# 表上
# 的是
# 会有
# 多个
# 不需要
# 效率高
# 给大家
# 这种情况
# 就得
# 会把
# 几步
# 较小
# 会将
# 来实现
# 也给
# 若不
# 则会
# 能满足
# 这会
相关文章:
如何在IIS中新建站点并解决端口绑定冲突?
已有域名和空间如何快速搭建网站?
如何选择高效响应式自助建站源码系统?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Android自定义控件实现温度旋转按钮效果
如何快速搭建高效可靠的建站解决方案?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
,网页ppt怎么弄成自己的ppt?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何登录建站主机?访问步骤全解析
自助网站制作软件,个人如何自助建网站?
如何挑选最适合建站的高性能VPS主机?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
如何注册花生壳免费域名并搭建个人网站?
建站之星下载版如何获取与安装?
如何在Tomcat中配置并部署网站项目?
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何安全更换建站之星模板并保留数据?
ppt制作免费网站有哪些,ppt模板免费下载网站?
装修招标网站设计制作流程,装修招标流程?
建站之星后台管理:高效配置与模板优化提升用户体验
建站主机选哪家性价比最高?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
制作表格网站有哪些,线上表格怎么弄?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
建站主机如何选?性能与价格怎样平衡?
独立制作一个网站多少钱,建立网站需要花多少钱?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
做企业网站制作流程,企业网站制作基本流程有哪些?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站之星伪静态规则如何正确配置?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
,有什么在线背英语单词效率比较高的网站?
如何获取免费开源的自助建站系统源码?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何通过老薛主机一键快速建站?
制作网站的公司有哪些,做一个公司网站要多少钱?
如何正确选择百度移动适配建站域名?
建站之星如何实现五合一智能建站与营销推广?
建站之星24小时客服电话如何获取?
nginx修改上传文件大小限制的方法
安云自助建站系统如何快速提升SEO排名?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
如何在阿里云完成域名注册与建站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。