150%;mso-list:l0 level1 lfo1;tab-stops:list 21.0pt"><span style="font-family:楷体_GB2312">一、<span lang="EN-US">sql</span>书写规范:</span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">1</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">sql</span>语句的所有表名、字段名全部小写,系统保留字、内置函数名、<span lang="EN-US">sql</span>保留字首字母大写。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">2</span><span style="font-family:楷体_GB2312">、连接符<span lang="EN-US">or</span>、<span lang="EN-US">in</span>、<span lang="EN-US">and</span>、以及=、<span lang="EN-US"><=</span>、<span lang="EN-US">>=</span>等前后加上一个空格。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">3</span><span style="font-family:楷体_GB2312">、对较为复杂的<span lang="EN-US">sql</span>语句加上注释,说明算法、功能。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span style="font-family:楷体_GB2312">注释风格:注释单独成行、放在语句前面。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">应对不易理解的分支条件表达式加注释;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) </span><span style="font-family:楷体_GB2312">对重要的计算应说明其功能;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(3) </span><span style="font-family:楷体_GB2312">过长的函数实现,应将其语句按实现的功能分段加以概括性说明;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(4) </span><span style="font-family:楷体_GB2312">关键性<span lang="EN-US">SQL</span>语句应有注释说明(表名、字段名)。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(5) </span><span style="font-family:楷体_GB2312">可采用单行<span lang="EN-US">/</span>多行注释。(<span lang="EN-US">-- </span>或<span lang="EN-US"> /* */ </span>方式)<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">4</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">SQL</span>语句的缩进风格<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">一行有多列,超过<span lang="EN-US">80</span>个字符时,基于列对齐原则,采用下行缩进<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) where</span><span style="font-family:楷体_GB2312">子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">5</span><span style="font-family:楷体_GB2312">、多表连接时,使用表的别名来引用列。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">6</span><span style="font-family:楷体_GB2312">、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%;mso-outline-level:1"><span style="font-family:楷体_GB2312">二、书写优化性能建议<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">1</span><span style="font-family:楷体_GB2312">、避免嵌套连接。例如:<span lang="EN-US">A = B and B = C and C = D <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">2</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">where</span>条件中尽量减少使用常量比较,改用变量<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">3</span><span style="font-family:楷体_GB2312">、大量的排序操作影响系统性能,所以尽量减少<span lang="EN-US">order by</span>和<span lang="EN-US">group by</span>排序操作。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span style="font-family:楷体_GB2312">如必须使用排序操作,请遵循如下规则:<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">排序尽量建立在有索引的列上。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) </span><span style="font-family:楷体_GB2312">如结果集不需唯一,使用<span lang="EN-US">union all</span>代替<span lang="EN-US">union</span>。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">4</span><span style="font-family:楷体_GB2312">、索引的使用。<span lang="EN-US">
<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) </span><span style="font-family:楷体_GB2312">尽量注意比较值与索引列数据类型的一致性。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(3) </span><span style="font-family:楷体_GB2312">对于复合索引,<span lang="EN-US">SQL</span>语句必须使用主索引列<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(4) </span><span style="font-family:楷体_GB2312">索引中,尽量避免使用<span lang="EN-US">NULL</span>。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(5) </span><span style="font-family:楷体_GB2312">对于索引的比较,尽量避免使用<span lang="EN-US">NOT=</span>(<span lang="EN-US">!=</span>)<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(6) </span><span style="font-family:楷体_GB2312">查询列和排序列与索引列次序保持一致<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">6</span><span style="font-family:楷体_GB2312">、尽量避免相同语句由于书写格式的不同,而导致多次语法分析。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">7</span><span style="font-family:楷体_GB2312">、查询的<span lang="EN-US">WHERE</span>过滤原则,应使过滤记录数最多的条件放在最前面。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">8</span><span style="font-family:楷体_GB2312">、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">9</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">in</span>、<span lang="EN-US">or</span>子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%;mso-outline-level:1"><span style="font-family:楷体_GB2312">三、其他经验性规则<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">1</span><span style="font-family:楷体_GB2312">、尽量少用嵌套查询。如必须,请用<span lang="EN-US">not exist</span>代替<span lang="EN-US">not in</span>子句。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">2</span><span style="font-family:楷体_GB2312">、用多表连接代替<span lang="EN-US">EXISTS</span>子句。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">3</span><span style="font-family:楷体_GB2312">、少用<span lang="EN-US">DISTINCT</span>,用<span lang="EN-US">EXISTS</span>代替<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%;mso-outline-level:1"><span lang="EN-US" style="font-family:楷体_GB2312">4</span><span style="font-family:楷体_GB2312">、使用<span lang="EN-US">UNION ALL</span>、<span lang="EN-US">MINUS</span>、<span lang="EN-US">INTERSECT</span>提高性能<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">5</span><span style="font-family:楷体_GB2312">、使用<span lang="EN-US">ROWID</span>提高检索速度。对<span lang="EN-US">SELECT</span>得到的单行记录,需进行<span lang="EN-US">DELETE</span>、<span lang="EN-US">UPDATE</span>操作时,使用<span lang="EN-US">ROWID</span>将会使效率大大提高。<span lang="EN-US"> <o:p></o:p></span></span></p>"/>
150%;mso-list:l0 level1 lfo1;tab-stops:list 21.0pt"><span style="font-family:楷体_GB2312">一、<span lang="EN-US">sql</span>书写规范:</span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">1</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">sql</span>语句的所有表名、字段名全部小写,系统保留字、内置函数名、<span lang="EN-US">sql</span>保留字首字母大写。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">2</span><span style="font-family:楷体_GB2312">、连接符<span lang="EN-US">or</span>、<span lang="EN-US">in</span>、<span lang="EN-US">and</span>、以及=、<span lang="EN-US"><=</span>、<span lang="EN-US">>=</span>等前后加上一个空格。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">3</span><span style="font-family:楷体_GB2312">、对较为复杂的<span lang="EN-US">sql</span>语句加上注释,说明算法、功能。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span style="font-family:楷体_GB2312">注释风格:注释单独成行、放在语句前面。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">应对不易理解的分支条件表达式加注释;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) </span><span style="font-family:楷体_GB2312">对重要的计算应说明其功能;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(3) </span><span style="font-family:楷体_GB2312">过长的函数实现,应将其语句按实现的功能分段加以概括性说明;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(4) </span><span style="font-family:楷体_GB2312">关键性<span lang="EN-US">SQL</span>语句应有注释说明(表名、字段名)。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(5) </span><span style="font-family:楷体_GB2312">可采用单行<span lang="EN-US">/</span>多行注释。(<span lang="EN-US">-- </span>或<span lang="EN-US"> /* */ </span>方式)<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">4</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">SQL</span>语句的缩进风格<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">一行有多列,超过<span lang="EN-US">80</span>个字符时,基于列对齐原则,采用下行缩进<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) where</span><span style="font-family:楷体_GB2312">子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">5</span><span style="font-family:楷体_GB2312">、多表连接时,使用表的别名来引用列。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">6</span><span style="font-family:楷体_GB2312">、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%;mso-outline-level:1"><span style="font-family:楷体_GB2312">二、书写优化性能建议<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">1</span><span style="font-family:楷体_GB2312">、避免嵌套连接。例如:<span lang="EN-US">A = B and B = C and C = D <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">2</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">where</span>条件中尽量减少使用常量比较,改用变量<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">3</span><span style="font-family:楷体_GB2312">、大量的排序操作影响系统性能,所以尽量减少<span lang="EN-US">order by</span>和<span lang="EN-US">group by</span>排序操作。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span style="font-family:楷体_GB2312">如必须使用排序操作,请遵循如下规则:<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">排序尽量建立在有索引的列上。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) </span><span style="font-family:楷体_GB2312">如结果集不需唯一,使用<span lang="EN-US">union all</span>代替<span lang="EN-US">union</span>。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">4</span><span style="font-family:楷体_GB2312">、索引的使用。<span lang="EN-US">
<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(1) </span><span style="font-family:楷体_GB2312">尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(2) </span><span style="font-family:楷体_GB2312">尽量注意比较值与索引列数据类型的一致性。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(3) </span><span style="font-family:楷体_GB2312">对于复合索引,<span lang="EN-US">SQL</span>语句必须使用主索引列<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(4) </span><span style="font-family:楷体_GB2312">索引中,尽量避免使用<span lang="EN-US">NULL</span>。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(5) </span><span style="font-family:楷体_GB2312">对于索引的比较,尽量避免使用<span lang="EN-US">NOT=</span>(<span lang="EN-US">!=</span>)<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">(6) </span><span style="font-family:楷体_GB2312">查询列和排序列与索引列次序保持一致<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">6</span><span style="font-family:楷体_GB2312">、尽量避免相同语句由于书写格式的不同,而导致多次语法分析。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">7</span><span style="font-family:楷体_GB2312">、查询的<span lang="EN-US">WHERE</span>过滤原则,应使过滤记录数最多的条件放在最前面。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">8</span><span style="font-family:楷体_GB2312">、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">9</span><span style="font-family:楷体_GB2312">、<span lang="EN-US">in</span>、<span lang="EN-US">or</span>子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%;mso-outline-level:1"><span style="font-family:楷体_GB2312">三、其他经验性规则<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">1</span><span style="font-family:楷体_GB2312">、尽量少用嵌套查询。如必须,请用<span lang="EN-US">not exist</span>代替<span lang="EN-US">not in</span>子句。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">2</span><span style="font-family:楷体_GB2312">、用多表连接代替<span lang="EN-US">EXISTS</span>子句。<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">3</span><span style="font-family:楷体_GB2312">、少用<span lang="EN-US">DISTINCT</span>,用<span lang="EN-US">EXISTS</span>代替<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%;mso-outline-level:1"><span lang="EN-US" style="font-family:楷体_GB2312">4</span><span style="font-family:楷体_GB2312">、使用<span lang="EN-US">UNION ALL</span>、<span lang="EN-US">MINUS</span>、<span lang="EN-US">INTERSECT</span>提高性能<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:150%"><span lang="EN-US" style="font-family:
楷体_GB2312">5</span><span style="font-family:楷体_GB2312">、使用<span lang="EN-US">ROWID</span>提高检索速度。对<span lang="EN-US">SELECT</span>得到的单行记录,需进行<span lang="EN-US">DELETE</span>、<span lang="EN-US">UPDATE</span>操作时,使用<span lang="EN-US">ROWID</span>将会使效率大大提高。<span lang="EN-US"> <o:p></o:p></span></span></p>"/>
一、sql书写规范:
1、sql语句的所有表名、字段名全部小写,系统保留字、内置函数名、sql保留字首字母大写。
2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。
3、对较为复杂的sql语句加上注释,说明算法、功能。
注释风格:注释单独成行、放在语句前面。
(1) 应对不易理解的分支条件表达式加注释;
(2) 对重要的计算应说明其功能;
(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明;
(4) 关键性SQL语句应有注释说明(表名、字段名)。
(5) 可采用单行/多行注释。(-- 或 /* */ 方式)
4、SQL语句的缩进风格
(1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进
(2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。
5、多表连接时,使用表的别名来引用列。
6、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;
二、书写优化性能建议
1、避免嵌套连接。例如:A = B and B = C and C = D
2、where条件中尽量减少使用常量比较,改用变量
3、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。
如必须使用排序操作,请遵循如下规则:
(1) 排序尽量建立在有索引的列上。
(2) 如结果集不需唯一,使用union all代替union。
4、索引的使用。
(1) 尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。
(2) 尽量注意比较值与索引列数据类型的一致性。
(3) 对于复合索引,SQL语句必须使用主索引列
(4) 索引中,尽量避免使用NULL。
(5) 对于索引的比较,尽量避免使用NOT=(!=)
(6) 查询列和排序列与索引列次序保持一致
6、尽量避免相同语句由于书写格式的不同,而导致多次语法分析。
7、查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面。
8、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。
9、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。
三、其他经验性规则
1、尽量少用嵌套查询。如必须,请用not exist代替not in子句。
2、用多表连接代替EXISTS子句。
3、少用DISTINCT,用EXISTS代替
4、使用UNION ALL、MINUS、INTERSECT提高性能
5、使用ROWID提高检索速度。对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。