关于SQL优化的一点建议
前段时间一直在做关于性能优化相关的工作,结合自己的实际工作经验,只针对SQL层面提一些优化的规范和建议。
针对SQL编写
1、单条SQL长度不宜超过100行;
2、SQL子查询不宜嵌套3层:
子查询嵌套过多,又可能会导致解析过于复杂,产生错误的执行计划;
3、SQL表关联需要考虑连接和限制条件的索引;
4、同一模块避免出现大量相似之处:
这种SQL写法一般比较可疑,一般可以优化,比如用with子句等;
5、尽量避免对列进行运算:
对列进行运算会导致索引失效,也会影响查询效率;
6、尽量批量提交;
7、尽量用数据量少的表作为驱动表,在表关联中,尽量使用小表关联大表。
索引相关
1、函数索引一般要尽量避免
2、位图索引在更新时是个噩梦,应谨慎使用
3、单表无索引时需要谨慎,但是索引数量也应控制
4、建联合索引时需要结合单列查询考虑,并考虑索引列的前后(详情参考前面的文章Oracle索引之Btree索引)
阻碍索引的情况
1、在索引列上使用not和<>
索引只能告诉我们什么存在于表中,不能告诉我们什么不存在表中。
2、在索引列上使用计算
包括‘||’,’+’但不限于这些字符串连接函数和数学函数,都会停用索引。
3、相同的索引列进行比较,会启用全表扫描。
4、当检索数据量超过30%表中的记录数,使用索引将没有显著的效率提高。
如果觉得我写的对你有帮助,欢迎关注我的公众号“代码狗go”支持一下呀。
关于SQL优化的一点建议的更多相关文章
- 关于Kafka部署优化的一点建议
网络和IO线程配置优化 配置参数 num.network.threads:Broker处理消息的最大线程数 num.io.threads:Broker处理磁盘IO的线程数 优化建议 一般num.net ...
- c/c++性能优化--- cache优化的一点杂谈
之前写了一篇关于c/c++优化的一点建议,被各种拍砖和吐槽,有赞成的有反对的,还有中立的,网友对那篇博客的的评论和吐槽,我一个都没有删掉,包括一些具有攻击性的言论.笔者有幸阅读过IBM某个项目的框架代 ...
- sql优化建议
背景: 在北京工作期间,我们做应用开发的和后台数据库的联系非常大,我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论 ...
- OCM_第十四天课程:Section6 —》数据库性能调优_各类索引 /调优工具使用/SQL 优化建议
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- 52 条 SQL 语句性能优化策略,建议收藏
本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行nul ...
- SQL性能优化的思路建议
如何在 Oracle数据库里写出高质量的SQL语句,如何在Oracle数据库里对有性能问题的SQL做诊断和调整,这是DBA们在ORACLE数据库实践中不可避免的难题.下面就让我们来分析一下拿到一条问题 ...
- (转)SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- SQL优化(zhuan)
转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...
- SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
随机推荐
- js考察this,作用域链和闭包
在严格版中的默认的this不再是window,而是undefined. 先看两个例子 example one var num = 20; var obj = { num: 30, fn: (funct ...
- 红黑树与AVL特性
红黑树:比较平衡的二叉树,没有一条路径会比其他路径长2倍,因而是近似平衡的.所以相对于严格要求平衡的AVL树来说,它的旋转保持平衡次数较少.插入删除次数多的情况下我们就用红黑树来取代AVL. 红黑树规 ...
- 【LeetCode每天一题】Add Binary(二进制加法)
Given two binary strings, return their sum (also a binary string).The input strings are both non-emp ...
- Linux命令行基础
常用命令 命令 功能 pwd 打开当前所在的文件目录 ls 查看当前文件夹下的文件(不包括隐藏文件) ls -a 查看当前文件夹下的文件(包括隐藏文件) ls -al 查看当前文件夹下的文件(包括隐藏 ...
- python小程序--Three(三级菜单)
#!/usr/bin/env python # _*_ coding:utf8 _*_ data = { "山东省":{ "滨州市":{"惠民县&qu ...
- JAVA常用加密解密算法Encryption and decryption
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...
- Gartner容器市场指南中国语境:容器成为新常态,灵雀云等本地厂商在选择中占据优势
在2019年2月“ China Summary Translation: 'Market Guide for Container Management Software'”的报告中,Gartner认为 ...
- Aes CBC加密
<?php namespace app\components; use yii; class Aes { /** * This was AES-128 / CBC / PKCS5Padding ...
- python学习笔记之socket(第七天)
参考文档: 1.金角大王博客:http://www.cnblogs.com/alex3714/articles/5227251.html ...
- JavaScript 常用内置对象(字符串属性、Math对象、Array数组对象)
1.字符串属性 <script> var test_var = "I Iove you"; console.log(test_var.charAt(3)) // ...