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‘
时间: 2024-08-27 12:28:42

SQL Server性能优化(4)命名和书写规范的相关文章

SQL Server 性能调优4 之书写高效的查询

限制查询的行和列来提高性能 这条规则非常简单,这里就不细说了. 使用搜索可参数化判断(sargable conditions)来提高性能 Sargable 由 Search ARGument Able 简写而来,字面意思是搜索可参数化?还是比较晦涩哎... 总之使用Sargable判断可以帮助查询优化器更有效地利用索引,并提高采用 index seek 的可能性,我们先把所有的操作符分一下组. Sargable操作符 = > >= < <= BETWEEN LIKE (通配符必须出

Sql Server 性能优化之包含列

Sql Server 性能优化之包含列 导读:数据数优化查询一直是个比较热门的话题,小生在这方面也只能算是个入门生.今 天我们就讲下数据库包含列这个一项的作用及带来的优化效果 引用下MSDN里面的一段解释: 当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显 著提高查询性能. 这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值:不 访问表或聚集索引数据,从而减少磁盘 I/O 操作 上面这一段什么意思呢? 意思就是说设置好包含列,能提高查询性能,减少IO输出.

SQL Server 性能优化(一)——简介

原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投入的硬件就可以减缓投入,从另外一个角度看来它就是节省了钱. 2.增加效率:对于客户来说,性能上去了,他们的工作效率也高了. 3.降低挫折感:性能底下,客户抱怨,无疑是对自己心灵上的打击. 二.性能误区: 性能误区 误区 现实 如果处理器使用率很高,那么需要添加更快的处理器 某一部分导致了性能问题 8

大话SQL Server性能优化(MSSQL高并发、性能调控、实践)

大话SQL Server性能优化(MSSQL高并发.性能调控.实践)网盘地址:https://pan.baidu.com/s/1KxdfcQD0XGD3M2ja_Y7UWQ 提取码:435v备用地址(腾讯微云):https://share.weiyun.com/5dTuZJ9 密码:xhmge4 本课程源于一家国内较知名的ERP厂商的一款产品出现性能问题后通过咨询服务解决了性能问题,然后根据自身多年技术培训.项目开发.产品研发与运维管理.软件公司内部咨询等经验,整理了在SQL Server 20

【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率

原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题,我从业务上了解到,显然对他们公司而言,丢数是绝对不能允许的. 另外,他们说之前也用过SQL Server的全文检索,但速度不够快,不如用mongodb快,当然我不太清楚他们所谓快的具体定义,比如查询只需要1秒,还是1分钟.他们的系统现在采用的是SQL Server,通过复制来实现高可用性,因为他们

SQL Server 性能优化之RML Utilities

数据库为sqlserver要做性能测试,在网上找了很多都是介绍RML Utilities的,当时在网上看了些别人的测试结果,感觉这个工具很神奇,于是暗下决心一定要把该工具掌握,接下来的时间就介绍一下我的rml utilities学习之路吧. 第一步:学习sql server自动的工具profile,这个工具很强大,它能够记录某一段时间内,该服务器所执行的sql语句的详细信息,当然了这个时间段可以根据你的需求自己选择.一般设置时间为2个小时,或者更多.当然采取的样本越多所得出的结果就更加准确,但是

SQL Server性能优化

源代码文件 1,什么是性能问题? 现有资源没有达到最大吞吐量的前提下,系统不能满足合理的预期表现,则可以定义为有性能问题.性能指标包括:响应时间,吞吐量,可扩展性. 2,初探优化 2.1优化论 一般遇到2种性能问题: 1),某个功能很慢,或者突然变慢,比如某个存储过程.查询等. 2),整个系统很慢. 第一种情况下,对象比较明确,所以处理起来相对轻松.大部分情况下,只需要研究执行计划就可以解决绝大部分问题.通过改变查询.调整表结构(索引等).就可以起到明显的效果. 第二种情况下,对象不明确,首先需

SQL SERVER性能优化综述

一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项. 一.分析阶段 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性.可用性.可靠性.安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能性需求,必须根据系统的特点确定其实时性需求.响应时间的需求.硬件的配置等.最好能有各种需求的量化的指

Sql Server性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON

1.前言 对于优化SQL语句或存储过程,以前主要是用如下语句来判断具体执行时间,但是SQL环境是复杂多变的,下面语句并不能精准判断性能是否提高:如果需要精确知道CPU.IO等信息,就无能为力了. PRINT convert(varchar(30),getdate(),121) select * from Sales.SalesOrderDetail where SalesOrderID > 64185 PRINT convert(varchar(30),getdate(),121) 这时候如果使

SQL Server 性能优化3 该指数(Index)保养

前言 之前的一篇文章介绍了索引来提高数据库的查询性能,这其实仅仅是个开始.也许假设缺乏适当的保养,索引你以前建立的,甚至成为拖累,成为帮凶下降数据库的性能. 寻找碎片 消除碎片索引维护可能是最常规的任务,,议是当碎片等级为 5% - 30% 之间时採用 REORGANIZE 来"重整"索引.假设达到 30% 以上则使用 REBUILD 来"重建"索引.决定採用何种手段和操作时机可能需要考虑很多的因素,下面4条是你必需要考虑的: 备份的计划 server的负载 磁盘剩