SQL优化

提升效率
  • 查询时,先将数据从数据库查出来,然后再做函数处理,尽量减少占用数据库连接(事务)的时间
  • 若数据量比较少,不超过100条记录,不需要使用索引
  • where条件及orderBy字段上建立索引,但一张表中最多不能超过6个索引
  • union all会查询出相同的记录,而且不对结果集进行排序;union 会过滤掉重复的数据,而且按照字母的顺序排序(自然排序),性能较union all差;如果确定查询结果不重复且对顺序没有要求,使用union all效率高许多
  • 若表中索引为复合索引,那么作为where条件的第一个字段须是复合索引的第一个字段,若where条件不使用复合索引的第一个字段,则不会使用该索引,会导致全表扫描
  • Student表中仅存在一个由三个列name,age,address组成的复合索引, where条件中只是用到了name,address两个过滤条件,那么只有name这一列应用到了该复合索引
  • 若表中存在大量重复数据,例如sex列,malefemale几乎各占一半,不会使用索引,应当把索引建立在区分度比较高的列
  • clustered索引列插入一条记录,将引起全表数据顺序的调整,耗费相当大的资源
  • 尽量使用数字类型列,因为执行引擎在执行连接和查询时,对于数字类型只需要比较一次,而字符类型要从首字母开始匹配。
  • 尽量避免向客户端输出大量数据,或者存在大事务操作,以提高系统的并发能力
避免以下引起全表扫描的语句
  • where条件中存在=null判断
  • 前置%not in的使用
  • where条件中使用函数或者表达式计算
  • where条件使用or分割条件,若其中一个条件没有使用索引,那么被or连接的多个条件都不使用索引,执行全表扫描
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值