数据库规则
文件状态: √ 草稿 正式发布 正在修改 | 文件标识: | |||||
当前版本: | V1.0 | |||||
作 者: | ||||||
完成日期: | ||||||
历 史 记 录 | ||||||
版本/状态 | 作者 | 参与者 | 起止日期 | 备注 | ||
V1.0 | ||||||
1、数据库规则
1、尽量不要使用 %XXX% 查询;采用 XXX%查询..
2、尽量不要使用函数查询;查询过程中尽量不要使用函数处理数据..
3、索引建立的原则:要建立的经常使用的字段上;建立在不会经常变动的字段上..
需要的时候建立组合索引
4、数据量大的表按必须加时间段查询;且时间段不要超过一年..
5、不需要用子查询的时候;尽量不要使用子查询..
2、常用SQL语句编写规范
目的:
通过该规范;统一各个项目工程SQL语句的设计编写
规范:
1、SQL关键字使用大写;一个关键字一行;每个关键字右对齐;
2、计算符如:+;-;=;<=;>=需要前后加空格;
3、涉及多个表的查询时;必须在SELECT列的字段前加表名或者表的别名;
4、WHERE子句书写时;每个条件占一行;语句另起一行时;以保留字或者连接符开始;连接符右对齐..
5、当语句的同一部分要延续到下一行时;按下列格式排列:
SELECT col1;col2;col3;col4;col5;col6;col7;
col8;col9;col10
1CREATE 语句
CREATE TABLE <表名>
<列名称1> <数据类型> ;
<列名称2> <数据类型> ;
<列名称3> <数据类型> ;
. . .
2SELECT 语句
SELECT <选择列列表>
INTO <新表名>
FROM <要选择的表名>
WHERE <搜索条件>
GROUP BY <分组条件>
HAVING <搜索条件>
ORDER BY <排序规则> ASC | DESC
3INSERT 语句
INSERT INTO <要插入的表名>
<列1>;<列2>;...;<列n-1>;<列n>
VALUES <列1值>;<列2值>;...;<列n-1值>;<列n值>
4UPDATE 语句
UPDATE <要更新的表名>
SET <要更新的列> = <列值>
5DELETE 语句
DELETE FROM <要删除的字段的表名>
WHERE <要删除的列> = <列值>
6、尽量不用Select
用select 时更多的消耗CPU、内存、IO、网络带宽
7、改写OR为IN
OR效率 On
IN效率 OLog n
注意控制in的个数;建议n小于200
例:select from opp where phone = '12347856' or phone ='42242233'
改成: select from opp where phone in '12347856' ;'42242233'
8、能够使用between就不要使用in
In会使系统无法索引;只能直接使用表中的数据
SELECT FROM T1 WHERE ID IN 10;11;12;13;14
改成:
SELECT FROM T1 WHERE ID BETWEEN 10 AND 14
能用UNION ALL就不要用UNION
UNION ALL 不执行Select distinct函数;这样就会减少很多不必要的资源
9、该写OR为UNION
不同字段;将or改为union
例:select from opp where phone =*************' or cellphone ='130****0000'
改成:select from opp where phone= *************'
Union
Select from opp where cellphone ='13000000000'
10、避免负向查询
Not 、=、 <>、<、>;not in;not like等
11、避免%前缀模糊查询
例:select from post where title like '%北京%'
改成:select from post where title like '北京%'
12、count资源开销大;尽量少用
13、尽量使用“>=”;不要使用“>”..
3、数据库命名规范
目的:
为了保证企业编写出的程序符合相同的规范;保证数据库命名风格一致性、统一性和标准化;特建立此规范——数据库命名规范..
示例:
以自动化办公OA模块为例;主键表:OA_Meeting;MeetingID为主键;外键表:OA_MeetingAfterTask;TaskID为主键..
类别 | 正确命名 | 错误命名 |
数据库名 | WB_OA | WBOA |
表名字符串长度规则 | OA_Meeting主表 | Meeting、OAMeeting、OA_meeting |
OA_MeetingDetails明细表 | OA_MeetingSub、MeetingDetails | |
字段名 | MeetingName | meetingName、Meeting_Name |
MeetingID | MeetingId、Meeting_ID | |
主键 | PK_OA_Meeting_MeetingID | PK_OA_Meeting、PK_MeetingID |
外键 | FK_OA_Met_MetID_OA_MATsk_TskID | FK_OA_Meeting_MeetingID_OA_MeetingAfterTask_TaskID超出长度 |
唯一键 | UK_OA_Meeting_MeetingID | UK_MeetingID |
索引 | IX_MeetingID_TaskID | IX_MeetingID、IX_TaskID |
存储过程 | SP_OA_GetMeetingInfo | SP_GetMeetingInfo、OA_GetMeetingInfo |
视图 | VW_GetMeetingID | Vw_GetMeetingID、GetMeetingID |
触发器 | TR_OA_Meeting_U更新操作 | TR_OA_Meeting、TR_OA_Meeting_Update |
函数 | FU_GetTaskID | GetTaskID |
数据库链接 | Lnk_ServerName_WB_OA | Lnk_WB_OA_ServerName、Lnk_ServerName |
作业 | Job_OA_Meeting_GetName | Job_GetName、Job_OA_Meeting |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论