数据库

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 来连接条件


 

posted @ 2019-03-20 17:09  dsger  阅读(364)  评论(0编辑  收藏  举报