大数据:百万级数据处理技巧篇(一)

大数据
后台-插件-广告管理-内容页头部广告(手机)

背景

由于业务场景需要,公司或者个人可能需要对百万数据进行统计分析,方便后续进一步分析和决策。但往往由于数据量太大,数据很难通过传统excel手工处理。如果您不会数据库,小编这边给您一个建议,将数据拆小,分批处理,分而治之。如果您会某一种类型的数据库,并且正在为当前数据处理而感到烦恼,您可以尝试从下面找到您想要的答案。

面向群体

有数据库开发经验的人员

对数据/数据库感兴趣的人员

致力于数据分析的人员

热爱SQL的人员

废话不多说,直接上干货

1、如果目前您还选择数据库,数据处理是一次性的,您可以选择Mysql数据库。安装简单,处理百万及以上的数据量足够。

2、如果您已经安装好数据库了。您不妨从如下几个方面检查是否可以提升数据处理性能:

SQL 优化:

1、用多少查多少,例如,查询用户表用户姓名

select * from user a order by id ;

替换为:

如果只需要用户名称,* 可以替换成 user_name,另外如果没有要求尽量不要加order by

select user_name from users a  ;

如果只需要用户名称,如果要查某人是否存在:可以加索引。

select user_name from users a where user_name='zhang san' ;

2、应尽量避免在 where ⼦句中对字段进⾏ null 值判断,null值不走索引,如:

select id from users where user_name is null;

替换为:

alter table users change  user_name user_name varchar(100) not null;

设置默认非空值,这样查询:

select id from users where user_name ='zhang san' ;

3、避免在 where ⼦句中使⽤ or ,这样会导致索引失效⽽进⾏全表扫描,如:

select id from users where id=1 or id=2;

可以这样查询:

select id from users where id=1union allselect id from users where id=2

4、避免在 where ⼦句中使⽤like ‘%zhang%’,全模糊匹配,这样也将导致全表扫描,如:

select id from users where name like ‘%zhang%’

5、⽤ exists 代替 in

select id from users where id in (select user_id from account );

替换后:

select id from users u where exists  (select user_id from account  a where a.user_id=u.id);

本篇文章就先介绍到这里,如果大家遇到其他问题,欢迎在底下留言:包含但不限于数据导入导出/SQL性能问题/千万级数据优化/亿级数据优化

编:昊几居

作者介绍:资深大数据库开发工程师,专注数据治理方向。

大数据:百万级数据处理技巧篇(一)

大数据(BIG DATA)

后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。