背景
由于业务场景需要,公司或者个人可能需要对百万数据进行统计分析,方便后续进一步分析和决策。但往往由于数据量太大,数据很难通过传统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)
评论留言