SQL优化(自用)

1.加索引/复合索引 当where使用到复合索引时 语句必须包含前置列(首列)索引即生效,
索引并非越多越好,增删改DML语句效率随索引数量降低,建议单表至多6列索引 


2.避免使用<>、!=、is null 可以给字段添加默认值0 对0进行判断


3.避免使用in,如in中为连续数值 可使用 between 代替,如in中为子查询可使用 exists 代替


4.避免使用or,可使用 union 代替 or ,union 和 union all 的区别为 union 默认使用去重 distinct+order by 默认排序


5.避免使用like,尽量在字段后面使用模糊查询,使用 like 做为条件时 '条件%' 索引有效  '%条件%' 索引无效


6.避免使用表达式、函数包裹where中索引字段导致索引失效


7.隐式类型转换造成不使用索引 如 varchar=123


8.order by 、group by、union、distinct 等表达式要与where中条件一致 否则不会利用索引进行排序、分组、并集、去重


9.避免出现select * ,提出业务实际列数
10.多表关联查询时,大表在前,小表在后,执行from后的表关联执行顺序oracle为从右至左(mysql相反)


11.使用表别名于列前缀减少解析时间并减少友列名歧义引起的语法错误


12.根据自上而下的顺序解析where子句,应将过滤数据多的条件往前放,最快速度缩小结果集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值