数据库的基本问题
没一个字段都是不可再分的基本数据项
非主键属性完全依赖主键. 不符合的会出现下面的问题: 比如(学号 姓名 课程 学分)
属性不依赖其他的非主属性,在 2nf基础上消除传递依赖
消除主属性对健的传递依赖
索引用 B+ 树可以减少树的深度,从而减少io次数1
n 阶树
索引的作用
缺点
什么时候使用索引
不用索引
复合索引
select * from users where area=’beijing’ and age=22;
每个单独建立索引 : 只会使用一个索引
建立复合索引: (area, age, salary) 应用最佳作前缀特性,相当于建立了三个索引 1,2,3 | 1,2 | 1
因此建立复合索引时,将最常用作限制条件的放在左边
索引不包含含有 null 的列
使用短索引
对长字段,前面的字符唯一,只需要索引前缀即可.
优点:减少空间,减少IO,提高查询速度
排序的索引问题
mysql 查询只会用一个索引,那么:
where order 都有索引 只会用where
like
'%...'不会使用索引.
不鼓励使用 like
不要在列上进行运算
YEAR(adddate)<2007 改成 adddate<‘2007-01-01’; 前者会进行全列扫描
NOT IN 改成 NOT EXITS
id != 3 改成 <3 or >3
备份方式 重点
备份时锁表,只读不写.
备份时间很久
一般大公司都是采用这种方式,搭建多台数据库服务器,进行主从复制
mysql 添加索引