数据库
1.索引
数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。
经常做查询,修改比较少的列,可以建立索引,提高查询效率
有些列经常做修改,就不需要加索引
缺点:缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
1、为什么需要用索引:因为数据中的记录很多,为了方便我们查找,提高查询的效率;
2、索引的原理:对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了,还有就是如果索引太多会降低查询的速度
3、索引是优缺点: 首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。那么在任何时候都应该加索引么?这里有几个反例:1、如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。2、对非唯一的字段,例如“性别” 这种大量重复值的字段,增加索引也没有什么意义。3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新。所以并不是任何情况下都改建立索引的。
2.数据库优化
1.统一SQL语句的写法
应该保证相同的查询语句在任何地方都一致,多一个空格都不行,大小写统一固定。尽量不要出现select * from 表名,应该使用select 列名 from 表名,因为select *每次都会查询所有的列,效率低。
2.使用“临时表”暂存中间结果
简化SQL语句的重要方法就是采用临时表暂存中间结果,但是,临时表的好处远远不止这些,将临时结果暂存在临时表,后面的查询就在tempdb中了,这可以避免程序中多次扫描主表,也大大减少了程序执行中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能。
3.使用索引
如果某些列经常做查询,修改比较少,可以在这些列建立索引,提高查询效率
4.使用like进行模糊查询时应注意
有的时候会需要进行一些模糊查询比如:select*from contact where username like ‘%yue%’
关键词%yue%,由于yue前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%
5.in操作符少用
除非必要,在操作中不要使用in,not in。因为它不能应用表的索引
使用exists和not exists,和between and
6.WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响
尽量将快速查询条件放在最前面
7.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库
8.应尽量避免在 where 子句中使用 or 来连接条件