频道栏目
首页 > 资讯 > 其他综合 > 正文

数据库优化(必会)

17-08-31        来源:[db:作者]  
收藏   我要投稿

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字段单独放在一张表。

相关TAG标签
上一篇:Oracle purge用法介绍
下一篇:本地Jedis链接远程的Redis服务
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站