未整理
一,减少 select *
语句,尽量使用覆盖索引。
二,where与on的执行顺序。
三,inner join、left join。
1.left join 的on 不能写右表的条件 (如rtable.id='11'、 rtable.id in ('1') )
四,最好不用(!= 、<> 、in、not in、not exists,使用Left join代替
1.举例一:not in ->left join
批量把B表中A表没有的数据放入A表中。
not in写法:
起初我想用【判断插入的数据在表中存不存在】中的方法(先IF NOT EXISTS 判断,然后插入),但是那个是为单条数据设计的;所以需要寻求用left join等方式代替。
left join写法:
2.举例二:in ->left join
同理,批量把B表中A表有的数据更新到A表中
见:
五,事务优化
1.善用视图与临时表:
如:先查后删的事务可以使用临时表优化,查询的数据保存在临时表里,读取临时表的数据作为删除条件
注意:修改临时表的数据不会影响原表数据,修改视图会影响原表的数据
举例一(特殊例:mssql中带left与where的sql,where的范围为left前的整个表,不受left筛选结果的影响):临时表的作用
环境:2008、2016、2019
2. 可以要用脏读With (NoLock)处理死锁,但是要慎重,会造成数据不全或者多出来一些。
请看解读:、
六,分页查询优化
作者:꧁执笔小白꧂