对数据库的任何操作都会加锁,可能导致死锁:
可以采用with(nolock)方式查询,但是会导致脏数据的问题
select top 10 * from Table with(nolock)
共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
排他锁(X锁):用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)
大数据表先筛选再join
想先筛选,再join ,语法如下 select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)
注意,只能筛选子表,主表还得通过where条件进行筛选,写在后面的是子表
避免死锁:使用临时表