关于sql优化的一些总结

2018-12-25  本文已影响29人  周六不算加班

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、获准排他锁的事务既能读数据也能写数据。
上一篇 下一篇

猜你喜欢

热点阅读