MySQL数据库的几种优化方案

最近找工作,很多公司在面试的时候都会问数据库优化的问题。今天我就在这里总结一下数据库优化问题,以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