2019年11月11日 日报

数据库优化

1.	在进行表格查询时 , where子句中的条件执行顺序是从左至右 , 清除数据量较大的条件应该放在左边.(特别注意: 笛卡尔积消除条件必须放在最左边)

2.	在进行表格查询时 , 列名列表应避免使用*号 ! 数据库在执行查询操作时, 会先将*号展开, 转换为所有的列名, 再进行查询.

3.	在进行表格查询时 , 能使用where条件筛选的数据, 应尽量避免使用having子句来筛选. 因为where条件执行在having之前 , 在早期筛选掉大量数据, 可以让程序执行的更顺畅.

4.	在进行多表查询时 , 查询的表顺序是从右至左的. 应把表中数据量最少的表放在查询的最右边.

5.	在进行多表查询时 , 应尽可能的给所有的表添加别名, 能明确的区分有冲突的列.

6.	在使用事务时 ,  应尽量多的commit , 尽量早的commit ! 原因是: 事务在未提交时, 数据库会耗费大量的内存 , 来缓存未提交的SQL结果 !

7.	尽可能多的使用函数 来提高SQL执行的效率. 

8.	SQL语句编写时, 除字符串以外 , 应使用大写字母 ! 因为SQL语句执行时, 会先将小写字母 转换为 大写字母, 再执行.

9.	应尽可能少的访问数据库 (多次数据访问的结果可能相同, 如果缓存起来 ,可以提高程序的执行效率)

10.	在索引列上 , 尽可能避免使用not来判断. not关键字如果判断了索引列 , 会导致此次查询索引失效 , 转而使用全表扫描的方式查询.

11.	在索引列上, 不能使用算数运算 , 算数运算也会导致索引列使用, 使用全表扫描的方式进行查询.

12.	在查询数据时, 如果需要使用>或<的条件, 应替换为>= 或 <= ! 
		原因是>和<符号 , 查询时, 是按照>= 和 <= 进行查询, 然后在撇去=的结果.