1、非索引优化
1.1、 ">="替代">",因为"="有定位的功能。
1.2、 update是个锁表语句,id主键是行级锁,没有主键是锁表。在使用的时候尽量用主键更新。
1.3、 用连接代替"not in","not exists"
2、关于索引
2.1、 使用索引是不能使用"*"
2.2、"like %"问题,使用like时左边不能有"%"
2.3、索引字段不能做运算
2.4、 为什么使用B+树而不是使用二叉树,
2.4.1、B+树可以根据节点分步加载,没有必要全部加载。
2.4.2、B+树的叶子结点都在同一层,数据都在叶子结点下,而且索引有序。在多条数据查询时速度快。
3、数据库读写锁(共享锁、排它锁)
3.1、读锁(共享锁)
实现: select ...... lock in share mode
注意点:1、其他用户可以并发读取数据,但任何事物都不能对数据进行修改(获取数据上的排它锁),直到已释放所有的共享锁。
2、如果事物T对数据A加上共享锁后,则其他事物只能对A再加共享锁不能加排它锁。
3、获取共享锁的事务只能读数据,不能修改数据。
3.2、写锁(排他锁)
实现:select ...... for update
注意点:1、如果事务T对数据加上排他锁后,则其他事物不能再对A加任何类型的锁。
2、获准排他锁的事务既能读数据也能写数据。
网友评论