MySQL数据库的几种优化方案
为什么要优化:
随着实际项目的启动,经过一段时间的运行,初始的数据库设置会与实际的数据库性能产生一些差异,所以我们需要进行一次优化调整。
数据库优化是一个大话题,可以分为四类:
主机性能
内存使用性能
网络传输性能
“SQL语句执行性能软件工程师
以下是一些数据库SQL优化方案:
(01)选择最有效的表名顺序(笔试)
数据库的解析器从右到左处理FROM子句中的表名,
将首先处理在FROM子句末尾写入的表。
当FROM子句包含多个表时,必须选择记录数最少的表放在末尾。
如果有三个以上的表连接到查询,您需要选择被其他表引用的表,并把它放在最后。
例如,查询员工的编号、姓名、薪资、薪资等级和部门名称。
选择员工编号、员工名称、员工销售、销售等级、部门名称
来自销售等级、部门、员工
其中(emp.deptno = dept.deptno)和(salgrade.losal和salgrade.hisal之间的emp.sal)
1)如果三个表完全不相关,就把记录和列名最少的表写在最后,以此类推。
2)如果三个表相关,将引用最多的表放在最后,依此类推。
(02)WHERE子句中的连接顺序(常见的笔试)
数据库从右向左解析WHERE子句。根据这个原则,表之间的连接必须写在其他WHERE条件的左边。
可以筛选出最大记录数的条件必须写在WHERE子句的右边。
比如查询员工的编号,姓名,薪资,部门名称。
选择员工编号、员工名称、员工销售、部门名称
来自员工,部门
其中(emp.deptno = dept.deptno)和(emp.sal & gt1500)
(03)避免在03)SELECT子句中使用*符号。
在数据库解析过程中,*会依次转换成所有的列名。这项工作是通过查询数据字典来完成的,这意味着需要更多的时间。
select empno,ename from emp
(04)删除表中的所有记录,并用TRUNCATE替换DELETE。
(05)尽可能使用COMMIT。
因为提交释放了回滚点
(06)将HAVING子句替换为WHERE子句。
先执行WHERE,后执行HAVING。
(07)多使用内部函数,提高SQL的效率。
(08)使用表的别名
salgrade s
(09)为列使用别名
珐琅e