数据库优化

来源:互联网 发布:淘宝开店信用卡套现 编辑:程序博客网 时间:2024/05/25 08:12

1.SQL上的优化
(1)尽量在子查询中增加过滤条件
比如:

create table person1(    id int,    name varchar(50),    age int);create table person2(    id int,    name varchar(50),    age int);不推荐:SELECT * FROM person1 WHERE id in(    SELECT id FROM person2) AND age > ?;推荐:SELECT * FROM person1 WHERE id in(    SELECT id FROM person2 WHERE age > ?);

(2)使用explain查看sql的详细信息。
比如 explain select * from person1 \G
\G表示显示竖版。
显示的一些详细参数,仔细研究后再补充。

(3)数据量大的时候需要避免扫描过多的记录,有以下几点需要注意:
a.建立合适的索引,比如在order by,where,group by,on从句等等上出现的字段。
b.索引字段越小越好。
c.离散度大的列放在联合索引前面。离散度大的指的是数值多样性多的。而联合索引类似(id1,id2)。
d.避免重复索引和冗余索引。

2.数据库表结构的优化
(1)int比varchar类型在mysql上处理简单。
(2)尽量存储数据的最小数据类型。
(3)少用text类型,若使用,单独用一张表存储。
(4)尽可能使用not null,设置默认值。
(5)数据库范式能够减少字段的冗余,但是适当情况下可以考虑反范式,以空间换时间。
(6)数据库的水平拆分:解决数据库单表数据量过多,将一张表水平拆分成多张表,遇到的问题:怎么在多张表中查询数据。
(7)数据库的垂直拆分:把原来一张表的列拆分,解决表的列的数量过多的问题。原则:常使用的列放在一个表,不常使用的列放在一张表,text字段单独放在一张表。

原创粉丝点击