三年程序员经验分享之sql优化

  • 时间:2018-11-07 23:23 作者:敲着代码走天涯 来源:敲着代码走天涯 阅读:645
  • 扫一扫,手机访问
摘要:从事软件开发的人员或者多或者少都会碰到过数据库优化的问题,尽管针对不同的数据库,专业的dba会给出不同的方案,分库、分表之类的。但对于普通的开发人员来说,掌握少量商定成俗的规则或者者说是更高效的sql书写形式则是非常必要的,本文总结出来以下几点都是工作中切切实实的感受,希望大家可以共同参考。1、数据

从事软件开发的人员或者多或者少都会碰到过数据库优化的问题,尽管针对不同的数据库,专业的dba会给出不同的方案,分库、分表之类的。但对于普通的开发人员来说,掌握少量商定成俗的规则或者者说是更高效的sql书写形式则是非常必要的,本文总结出来以下几点都是工作中切切实实的感受,希望大家可以共同参考。

1、数据库表设计层面尽量满足三范式的要求。当然此处说的是大多数的情况,并不是说肯定不能有冗余之类的,只是少量通用的规则;

2、表设计的时候外键的束缚能不加就不加,可将强相关逻辑放在程序中控制,删除时做好级联删除即好。(该规则尤其适用于那些按月或者者不同日期数据量翻倍的基础表)

3、sql尽量保持全大写的书写形式。笔者第一份工作接触的就是oracle数据库,oracle在执行时会默认将sql转换为大写,尽管我们知道sql是不区分大小写的,但是保持统一的风格以及让oracle免去这一次转换也是很有意义的;

4、能不用in的尽量别用in,用exists代替。对于内表和外表同样数量级来说exists和in的效率差别不是很大,但对于内表特别大的sql,我们用in的效率就很底下。鉴于此,我们还是尽量减少用in的使用频率,由于说不好你那天的内表数据量就特别大了!

5、减少to_char、substr等函数在索引字段上的使用。若强制使用会导致索引失效,我们针对具体的sql可以看执行计划进行分析验证;

6、用主键关联一个表查某几个字段的时候,尽量使用子查询,会优先使用主键的唯一索引;

7、程序中尽量减少拼接sql,使用预编译。一方面可以防止sql攻击,一方面各个数据库的执行机制也对预编译有优化,效率上更高。

以上都是笔者工作中总结出来的血的经验,尽管比较零散,但感觉有时候就是这少量小的点导致我们的sql执行效率特别低下。还有一点就是执行计划特别重要,我们肯定要养成多看执行计划的习惯。oracle数据库的话我们一般用pl/sql直接快捷键F5即可以看到执行计划,mySql的话用explain直接跟sql的形式即可以进行查看。

三年程序员经验分享之sql优化

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
手机二维码手机访问领取大礼包
返回顶部