adfsa

sdafsaf

SQL争议的节操

 word 下载地址  /Files/zouyong/SQL争议的节操.doc                 SQL争议的节操
 


技术部
 

邹勇
 
2012.8.1
 
特以此庆祝8.1建军节
 


 
 

目录
 1.概述
 1.1致谢词
 1.2 描述
 2.编写初级SQL规范
 2.1 SQL SERVER 内置函数 必须大写 除DBO
 2.2.每个函数之间只有一个空格
 2.3传入的元素必须和字段相同格式大小
 2.4传入的元素长度必须和数据库字段 长度一致
 2.5编写字段不需要加[] 除非 SQL 关键字
 2.6在写表名称的时候 前面不需要有架构名.
 2.7在写TOP 5 的时候 需要注意格式
 3.编写高效SQL规范
 3.1写SQL 要打开 SET STATISTICS IO ON
 3.2. 在写SQL 之前需了解 查询的表是否有索引, 方便 写的时候 可以利用
 3.3尽量把经常要查询的字段 放入第一列索引
 3.4如果在写子查询 需要利用索引 效率才会高
 3.5连接字段尽量选择聚集索引所在的字段.
 

1.      
 概要
 
 
1.1     
 致谢词                                                            感谢                                                 
 
1.2     
 描述                                                            
 初级规范是一些基本SQL的语法包括                               
 高级规范是一些SQL写法注意事项 (特此声明这节内容,一定要是非常喜欢品味索引的同事.看)                                    
 以下SQL内容若有疑问 可以探讨 改进
 

1.3     
 SQL精神                                                           
 有人问我SQL精神,我告诉他:品味和学习
 
1.4     
 版本1 发布时间2012-08-01
 

2.  编写初级规范
 


2.1   SQL SERVER 内置函数 必须大写 除dbo
 

示例                                                                  

 
 
1 SELECT id FROM dbo.Table_1 WHERE QQ='' AND Tel=’’                    

  结果    可以明确区分关键字和字段差异

 

 
2   Select id  From dbo.Table_1 Where QQ='' AND Tel=’’                
结果     大小切换比较繁琐
 

 
 
3   select id,usesid,(select username from dbo.tuser),
(select tel from dbo.tusess) from dbo.Table_1 where QQ='' AND Tel=’’ 
 结果    如果在一大堆SQL中一眼看上去,首先想的是SELECT和FROM和WHERE之间的字段和条件,如何关键字大写,看上去比较明显区分


2.2  每个单词之间只有一个空格
 

 


2.3   传入的元素必须和字段相同格式大小
 


 
示例
 

 
1   SELECT ID  FROM dbo.Table_1 WHERE QQ='' AND Tel=@Tel

结果   不管在C#代码中或者把参数传入数据库中,都能很好的和数据库字段对应关系,分工的人也一眼找到对应的关系

 
 
2   SELECT ID FROM dbo.Table_1 WHERE QQ='' AND Tel=@T

结果   在分工写功能的时候,如果有小明定义一个这样的元素传入存储过程中,小张在查看中,一眼是无法看见关系的,比较迷茫

 
2.4 传入的元素长度必须和数据库字段 长度一致
 

 
示例

 
结果

 
1   Parameters.Add("@Tel ",Tel, SqlDbType.VarChar, 40)
 
(@Tel
   VARCHAR(40))SELECT Tel FROM dbo.Table_1 WHERE Tel=@Tel
 
2   Parameters.Add("@Tel",Tel, SqlDbType.VarChar, 30)
 
(@Tel
   VARCHAR(30))SELECT Tel FROM dbo.Table_1 WHERE Tel=@Tel


以上可以得出,如果我们和数据库字段统一长度,生成出来的就一份计划缓存


 
2.5
 编写SQL表字段, 关键字需要加[]
 

示例

 


 
1   SELECT TOP 1000 [user],ID,UserName,AddTime,Tel,QQ FROM dbo.Table_1
 
结果   只有关键字加[]

  
 
2  SELECT TOP  1000 [user],[ID],[UserName],[AddTime],[Tel],[QQ] FROM [dbo].[Table_1]
 
结果 不是关键字不需要加[]

 
 
2.6
 在写表名称的时候前面不需要有架构名
 


 
 
2.7
 在写查询TOP前几条数据的时候 需要注意
 

 
示例

 
SELECT TOP
   10 ID FROM dbo.Ta

 
SELECT TOP
   (10) ID FROM dbo.Ta

  


 
 
3.
 编写高效SQL规范
 


 
 
3.1 写sql要查看 SET STATISTICS IO ON, SET STATISTICS TIME
 ON
 


 
 
查看读取页数 和 是否缺少索引,索引使用率,是否合理
 


 
 
3.2 在写sql
 之前需了解查询的表是否有索引,方便写的时候可以利用
 


 

3.3尽量把经常要查询的字段
 放入第一列索引(这个是指的聚集索引key或非聚集索引key)
 


 
 
3.4如果在写子查询的时候, 需要利用索引 效率才会高。
 


 
 
3.5连接字段尽量选择聚集索引所在的字段。
 


 
 

posted on 2012-08-27 16:46  zou  阅读(382)  评论(0编辑  收藏  举报

导航