sql优化
选取最合适的字段属性(字段长度不宜过长,能用数值型就用数值型(比文本型快))
使用连接来代替子查询
使用union来代替创建的临时表
使用事务(从安全的角度考虑,定义事务 begin commit)
使用锁(从一致性的角度考虑)
使用外键(保障一致性,数据之间的关联关系 foreignkey( *) reference talble(*))
使用索引,在经常需要查询的字段上建立索引,例如jion where用到的字段
查询语句的优化,先选择再连接,尽量避免使索引失效(or,like)
索引为什么能够提高效率
索引的数据结构,索引是树,复杂度是logm,n(m阶树)
索引不存放实际数据,一次I/O可以读取更多的数据,方便快速确定数据真实的位置
数据库三范式
第一范式:属性不可拆分
第二范式:非主属性完全依赖于码
第三范式:非主属性既不完全依赖于码,也不传递依赖于码
数据库索引的执行流程
索引中存放索引和rowid,索引扫描分两步,首先扫描索引得到rowid,然后根据rowid去读取对应的行的数据(如果得到的行数太多则不使用索引扫描,因为每次索引扫描其实分两次I/O,如果行数过多索引效率很低)