SQL Server性能优化(4)命名和书写规范
命名规范是一个老生常谈的问题,好的命名规范对于团队程序开发,对bug定位、处理,项目延续有很重要的作用。
一、 列举现在的问题:
1.名称首字母不大写
2. 用中文名字
3. 语句书写不规范,如下,关键字基友大写也有小写。编程风格不统一。
二. 通常的数据库对象命名基本规范(网络+自己整理)
1. 总体命名规范
a. 名称的长度不超过32个字符。
b. 名称采用英文单词、英文单词缩写和数字,单词首字母大写。 说明:除非用户提供文档化的行业标准(例如,国标或部颁标准),否则不得违反本规范。
c. 不得采用“_”作为名称的起始字母和终止字母。
d. 名称必须望文知意。
e. 名称不得与数据库管理系统保留字冲突。
2. 数据库名
a. 数据库名定义为系统名+模块名,或直接采用系统名,如热表采集平台用户数据库HeatUser。
b. 数据库名全部采用小写(?系统自带数据库是小写)。
3. 数据库文件(用于分区分表时,增加数据库文件)
a. 数据文件命名采用数据库名+_+文件类型+[文件序号].文件后缀,文件序号为1、2、3…9等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时可不加。
b. 文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf。
c. 文件名全部采用小写。
4. 表 表命名要遵循以下原则:
a. 采用“系统名+_+T_+模块名+_+表义名”格式构成。若数据库中只含有单个模块,命名可采用“系统名+T_+表义名”格式构成。如用户库里的用户日志表:User_T_Log.
b. 整个表名的长度不要超过30个字符。
c. 系统名、模块名均采用小写字符(系统自带数据库表名是小写)。
d. 模块名或表义名均以其英文单词命名,且字符间不加分割符;表义名中单词的首字符大写,其它字符小写,多个单词间也不加任何分割符,单词全部采用单数形式。
e. 数据库中不论是表名还是字段名,都一律用英文,不准出现其它语言;每个单词的第一个字母必须大写;如果太长根据实际情况,实际习惯进行缩写。
5. 列或字段命名遵循以下原则:
a. 采用有意义的列名,为实际含义的英文单词,且字符间不加任何分割符。
b. 属性名前不要加表名等作为前缀。
c. 属性后不加任何类型标识作为后缀。
d. 不要使用“ID”等与系统保留关键字冲突的单词作为列名。
e. 主键均用“ID”。
f. 外键命名为:“fk+_+表名(或缩写)+_主表名(或缩写)+_+主键标识”,如果用户日志表里的用户ID外键列:fk_User_ID。
6. 索引
a. 索引的命名为:“表名(或缩写)+_+列名+_idx”。多个列的索引只写第一列。
7. 触发器
a. AFTER型触发器: 系统名+tr_+<表名>_+<i,u,d的任意组合>,其中i,u,d 分别表示insert、update和delete。
b. INSTEAD OF型触发器: 系统名+ti_+<表名>+_+<i,u,d的任意组合>,其中i,u,d 分别表示insert、update和delete。
8. 视图 视图命名以系统名+v_+模块名作为前缀,其他命名规则和表的命名类似。
9. 存储过程
a. 存储过程命名由“系统名+sp+_+主表名+_+操作+_+存储过程标识(缩写)”组成。操作有Insert,update,Delete,select。 如oa表里添加用户的存储过程OA_sp_User_Insert,选择用户OA_sp_User_Select_ByID
10. 函数 函数命名由“系统名+f+_+函数标识”组成。
11. 变量名
a. 参数变量命名采用“i (o或io)+_+ 名称”形式,前缀i 或o 表示输入还是输出参数。
b. 过程变量命名采用“l+_+名称”形式。
c. 变量名采用小写,若属于词组形式,用下划线分隔每个单词。
d. 角色-全部使用小写字符命名。-由“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成。
e. 用户-全部使用小写字符命名。-由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成。
三、Transact-SQL编程基本规范
1. 一般性注释
a. 注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将会大大增加文本的可读性和可维护性。
b. 注释尽可能详细、全面。
c. 创建每一个数据对象前,应具体描述该对象的功能和用途。
d. 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定 含义的变量(如boolean类型变量),应给出每个值的含义。
e. 注释语法包含两种情况:单行注释、多行注释。
单行注释:注释前有两个连字符(--),最后以换行符结束。一般对变量、条件子句可以采用该类注释。
多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。
e. 注释应当简洁,同时应描述清晰。
2. 函数文本注释
a. 编写函数文本--如视图、函数、触发器、存储过程以及其他数据对象时,必须为每个函数增加适当注释。该注释以多行注释为主,主要结构如下:
--******************************************************************
--name : --函数名
--function : --函数功能
--input : --输入参数
--output : --输出参数
--author : --作者
--CreateDate : --创建时间
--UpdateDate : --函数更改信息(包括作者、时间、更改内容等)
--******************************************************************
CREATE [OR REPLACE] FUNCTION dfsp_xxx …
b. 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。
c. 在每一个变量声明之后添加注释。说明该变量的用途,通常,简单使用单行注释。
d. 在块的每个主要部分之前添加注释,在块的每个主要部分之前增加注释,解释下—组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述。
e. 在块和过程的开头注释中还可以增加要访问的数据库等信息。
3. 常用SQL语句的编写基本规范
a. CREATE 语句
CREATE TABLE publishers
(
pub_id char(4) NOT NULL --标识
CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756')
OR pub_id LIKE '99[0-9][0-9]'),
pub_name varchar(40) NULL, --名称
city varchar(20) NULL, --城市
state char(2) NULL, --州
country varchar(30) NULL --国家
DEFAULT('USA')
)
b. SELECT语句
查询语句采用以下原则编写(可最大化重用共享池中的SQL语句,提高应用程序性能):
将SELECT 语句分为5部分:SELECT,FROM,WHERE,GROUP BY, ORDER BY, 每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐,如
SELECT col1, col2, col3
FROM table1
WHERE col1 > col2
GROUP BY col1, col2
ORDER BY col1;
所有关键字用大写。
将语句中WHERE 和AND 部分格式化,书写布局类似于以下,并且操作两边应各留一个空格
WHERE a = 1
AND b = 2
AND c=3
c. INSERT语句
INSERT INTO <要插入的表名>
(<列1>, <列2>, .., <列n-1>, <列n>)
VALUES (<列1值>, <列2值>, .., <列n-1值>, <列n值>)
d. UPDATE语句
UPDATE <要更新的表名>
SET <要更新的列> = <列值>
f. DELETE语句
DELETE FROM authors
WHERE name = 'admin'
SQL Server性能优化(4)命名和书写规范的更多相关文章
- SQL Server 性能优化(一)——简介
原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投 ...
- SQL Server 性能优化之——系统化方法提高性能
SQL Server 性能优化之——系统化方法提高性能 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索引设计 4. 使用高效的查询设计 5. 使用技术分析低性能 6. 总结 1. 概 ...
- SQL Server性能优化与管理的艺术 附件下载地址
首先感谢读者们对鄙人的支持,购买了<SQL Server性能优化与管理的艺术>,由于之前出版社的一些疏忽,附件没有上传成功,再次本人深表歉意. 请需要下载附件的读者从下面链接下载,谢谢: ...
- SQL Server性能优化(6)查询语句建议
1. 如果对数据不是工业级的访问(允许脏读),在select里添加 with(nolock) ID FROM Measure_heat WITH (nolock) 2. 限制结果集的数据量,如使用TO ...
- SQL SERVER性能优化综述
SQL SERVER性能优化综述 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软 ...
- SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1)
SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1) 安装Quick Start工具 RML(Replay Markup Language)是MS ...
- 【SQL Server性能优化】删除大量数据的方法比较
原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...
- 【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率
原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题 ...
- SQL Server 数据库设计、命名、编码规范
https://blog.csdn.net/songguozhi/article/details/5858159 SQL Server 数据库设计.命名.编码规范
- SQL Server 性能优化详解
故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...
随机推荐
- Summarize code for the three presentation experiments
Image Picker Controller @IBAction func experiment() { let controller = UIImagePickerController() sel ...
- Windows Server 2008 R2 密码破解
Win 2008 Server 忘记密码怎么办,不能像Win7/8/XP 那样用PE破解就只有这种方法了1.首先,把Windows 2008 的镜像放进去光驱我们用光驱启动 2. 这时候按下S ...
- 刚开始学IOS遇到的类和方法
框架:Core FoundationCFGetRetainCount. 类:NSRunLoop.NSAutoreleasePool.NSStringFormClass.UIApplicationMai ...
- [leetcode]_Merge Two Sorted Lists
题目:合并两个有序单链表 思路:一开始想复杂了,以为必须在原链表上修改(绕来绕去还AC了,但是思路相当绕),其实没有,按照正常地合并两个数组同样的方法也对. 代码: public ListNode m ...
- 360提供的SQL防注入
<?php class sqlsafe { private $getfilter = "'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\ ...
- Python之Redis操作
1.安装驱动 输入命令:pip install redis 2.直接使用驱动 import redis r = redis.StrictRedis(host='127.0.0.1', port=637 ...
- linux的一点小随笔
随意写的一些东西,也就为以后自己可能看看... 1.vim安装,sudo apt-get install vim-gtk,于是vim就安装好了.当然在我电脑上还出现了gvim,简单的vim配置(etc ...
- perl thread
#!/usr/local/bin/perl use threads; @domain = ("tom.com", "chinadns.com", "1 ...
- Ruby使用gets的错误:gets得到的有'\n',需要使用chomp去掉
gets方法得到的字符串包含一个“\n”回车符,所以我们需要继续使用chomp方法把"\n"回车符去掉
- throw和throws
uncheckException的处理 class User{ private int age; public void setAge(int age){ if(age < 0){ //生成异常 ...