全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

常用SQL语句优化技巧总结【经典】

本文实例总结了常用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吗  # 将会  # 表上  # 的是  # 会有  # 多个  # 不需要  # 效率高  # 给大家  # 这种情况  # 就得  # 会把  # 几步  # 较小  # 会将  # 来实现  # 也给  # 若不  # 则会  # 能满足  # 这会 


相关文章: 全景视频制作网站有哪些,全景图怎么做成网页?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何在建站主机中优化服务器配置?  金*站制作公司有哪些,金华教育集团官网?  如何用美橙互联一键搭建多站合一网站?  如何在宝塔面板创建新站点?  如何通过VPS建站无需域名直接访问?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何选择高效便捷的WAP商城建站系统?  建站主机与服务器功能差异如何区分?  广东企业建站网站优化与SEO营销核心策略指南  建站org新手必看:2024最新搭建流程与模板选择技巧  已有域名和空间如何搭建网站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何通过商城自助建站源码实现零基础高效建站?  公司网站设计制作厂家,怎么创建自己的一个网站?  名字制作网站免费,所有小说网站的名字?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  如何快速搭建高效可靠的建站解决方案?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何用5美元大硬盘VPS安全高效搭建个人网站?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  婚礼视频制作网站,学习*后期制作的网站有哪些?  宿州网站制作公司兴策,安徽省低保查询网站?  建站主机选购指南:核心配置优化与品牌推荐方案  佛山网站制作系统,佛山企业变更地址网上办理步骤?  郑州企业网站制作公司,郑州招聘网站有哪些?  香港服务器选型指南:免备案配置与高效建站方案解析  ui设计制作网站有哪些,手机UI设计网址吗?  如何破解联通资金短缺导致的基站建设难题?  建站之星收费标准详解:套餐费用及年费价格表一览  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  建站之星后台密码遗忘如何找回?  大型企业网站制作流程,做网站需要注册公司吗?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何将凡科建站内容保存为本地文件?  如何通过商城免费建站系统源码自定义网站主题?  如何用虚拟主机快速搭建网站?详细步骤解析  建站主机无法访问?如何排查域名与服务器问题  红河网站制作公司,红河事业单位身份证如何上传?  自助网站制作软件,个人如何自助建网站?  如何在香港免费服务器上快速搭建网站?  如何快速搭建高效WAP手机网站吸引移动用户?  孙琪峥织梦建站教程如何优化数据库安全?  如何通过多用户协作模板快速搭建高效企业网站?  简单实现Android验证码  青浦网站制作公司有哪些,苹果官网发货地是哪里?  建站之星在线客服如何快速接入解答?  网站制作网站,深圳做网站哪家比较好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。