暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Sql规范-sql优化.doc
9
4页
0次
2025-04-21
免费下载
Sql 开发规范
Romulus
1. 包、过程、函数的注释。
a)头部进行功能和参数说明
b)主体部分,如算法复杂时,应以注释的方式对其算法结构做出说明。
2. SQL 优化规则:
a)在保证实现功能的基础上,尽量减少对数据库的访问次数。
b)通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担。
c) 能够分开的操作尽量分开处理,提高每次的响应速度。
d)算法结构尽量简单。
e)使用存储过程,使 sql 更加灵活高效。
f) where 句中,选最有效的连接顺序表之间的连接必须到前面,可以
滤掉最大数据量的条件必须写到末尾。
g)避免使用 select*语句,最小化结果集,减轻网络负担。
h)提倡使用表的别名,并把别名带到每个列上,减少解析的时间。
i) 使char varcharvarchar2 nvarchar
是不兼容的。
j) 避免使用耗费资源的操作(ORDER BY DISTINCT
k) 尽量在 GROUP BY 之前,过滤掉多余的行。
l) 使用内连接能满足要求的不要使用外连接。
m) 同一个列的多个 OR 条件,建议用 IN 操作符代替
n)建议使用 exists not exists 代替 IN NOT IN
o)exists in 使NOT使 NOT INNOT
EXISTS
p)在判断有符合条件的记录时尽量不要select count1而是要用 exits
语句。例如ifselect count(1) from table_name where column_name=’xxx’
应该改为 if(exists(select 1 from table_name where column_name-=’xxx’))
q)多表查询时,如果其中一个表的记录数量明显大于其他表,则可以先对此表进行查
询后,再与其他小表进行表连接。
r) 在关键字段上建立索引,使用索引来更快的遍历表。
s) 避免使用 select*语句,这样标字段的增减变化,不会影响到查询效率。
t) 尽量不要在 where 子句中使用子查询。
3. 索引的使用
a) where 句中,避对字段进行表达式作或函数操作,避使用 like
查询使 OR IN 条件使用!=<>,避使 is null
is not null 操作来判断字段是否为空。如果使用需要使用 F5 查看执行计划。必要的是要
需要强制使用相应的索引。
b)尽量注意比较值与索引列数据类型的一致性。例如对于 char 型的 emp_type 字段:
where emp_type=123 应改为 where emp_type=’123’
c) 查询列、排序列要与索引列的顺序保持一致。
i. A(deptNo,job) order by deptNo,job, order by job
deptNo
ii. BempNo,jobselect empNo,job from emp where
empno<100 and job=’manager’, select empNo,job from emp where
job=’manager’ and empNo<100
4. sql 语句的优化:
a)检查 sql 语句是否符合第二步中的优化规则。
b)检查 sql 语句是否否和第三步索引使用规则。
c) 分析关键的表:
analyze table aqm.qm_mat_pinvoice_lines delete statistics;
analyze table aqm.qm_mat_pinvoice_lines compute statistics for all
indexes;
analyze table aqm.qm_mat_pinvoice_lines compute statistics for all
of 4
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。