数据库优化有三个基本方向:服务器内核优化;my.cnf文件配置,搭配压力测试进行调试;sql语句调优。前两个方面一般不由开发人员完成。

sql优化有如下思路:

1.使用缓存优化:多次查询的结果放入缓存中,在后续进行同样的查询时直接在缓存中提取。这是在实际工作中该方法十分有效。但是缓存的sql语句如果结果不固定,缓存将失效。

select ename,hiredate
from emp 
where hiredate<=sysdate;

2.使用explain检测sql查询,可以知道数据库究竟是如何实现sql语句的。

3.给常用的搜索字段建立索引(常用于where子句后的字段,但是数据量特别大的情况下可能就不太实用,此时会进行全表扫描进行查询,这是由于集聚索引与非集聚索引原理)。

4.使用limit关键字,比如当明确只有一行查询语句时,使用这个关键字可以使这条sql执行完即返回。

5.永久连接(在一些极端环境中,apache会不断发出http请求,创建子进程访问数据库增加其压力)。

6.选择正确的数据库引擎(如mysql中myIsam适合大数据量查询,innerdb比较适合大数据量的查询)。

7.在进行大量的插入、删除数据时,由于数据库会在删除数据时封锁,可能出现宕机,使用limit对其进行sql拆分。

8.数据类型尽量使用合理的类型,不要占用过多内存。

9.固定字段长度,这虽然可能造成一部分内存占用,但是数据库计算偏移量时会很容易。

10.尽量不要使用null值。