时间:2021-07-01 10:21:17 帮助过:24人阅读
特别是列名和表名都大写。 特别是 sql 命令的缓存功能, 更加需要统一大小写。
(三)能不设计外键就不要有外键
有外键约束会影响插入和删除性能, 如果程序能够保证数据的完整性, 那在设计数据库时就去掉外键。
(四)表拆分
在设计表的时候就可以考虑单表是否可以拆成多表操作,但是避免无意义的两个列的表,这是表的浪费。
(五)SELECT子句中避免使用 * 号
ORACLE在解析的过程中,会将 * 依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间
(六)使用表的别名
当SQL语句连接多个表时,请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误。
(七)用EXISTS替代IN、用NOT EXISTS替代NOT IN
在子查询中,NOT IN子句将执行一个内部的排序和合并.无论在哪种情况下,NOT IN都是最低效的(因为它对子查询中的表执行了一个全表遍历)。为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。
(八)优化GROUP BY
提高GROUP BY语句的效率,可以通过将不需要的记录在GROUP BY之前过滤掉.
低效:
SELECT JOB , AVG(SAL) FROM EMP GROUP by JOB HAVING JOB = ‘PRESIDENT‘
高效:
SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT‘ GROUP by JOB
数据库优化经验
标签:执行 存在 fonts 插入 静态 访问 avg 函数 进入