mssql sqlserver 11条军规


摘要:
下文主要讲述sqlserver 设计及sql脚本编写中遇见的一些最优写法的收集,如下所示:



sql写法注意事项

1.谨慎使用 not in not exists 及不等于关键字,因为这种写法,会导致索引无法使用

 
    select * from tableName 
	where info !=0  
    

2.尽量少使用前匹配的模糊搜索

    ---此种写法会导致索引效率低下   
	select * from tableName
	where info like '%info'
 

3.表中数据区别不大的数据,最好不要使用索引
例:
性别列中只存储,男 女 两个信息,如果在此列上建立索引,则每次查询都会检索到大量的数据,所以索引存在的意义不大。
4.sql脚本编写时,列上禁止使用函数,会导致索引失效

    select * from tableName where  year(info) <2018 
	-----应改写为-------------------
     select * from tableName where  info <'2018-1-1' 
  

5.按需返回数据,
例:只需一条数据,或只有一条数据时候,

   select  top 1 * from tableName 
  

6.计算操作,尽量放入业务层操作,将数据库作为一个存储容器

7.避免sql中,出现类型转换,类型转换会导致全表扫描

8.连接操作时,连接字段需具有相同的数据类型,否则会导致全表扫描操作



表设计注意事项

9.禁止列上存在 null值
null值可能会导致检索异常,
例1:count(列名)
例2:select * from tableName where info =''
---------------------------------------------------
10.根据业务模式,适当的设置符合索引

11.表存储数据时,例状态、类型信息,尽量使用int类型,可以达到节约存储空间和提高检索效率