欢迎大家来到IT世界,在知识的湖畔探索吧!
背景
由于业务场景需要,公司或者个人可能需要对百万数据进行统计分析,方便后续进一步分析和决策。但往往由于数据量太大,数据很难通过传统excel手工处理。如果您不会数据库,小编这边给您一个建议,将数据拆小,分批处理,分而治之。如果您会某一种类型的数据库,并且正在为当前数据处理而感到烦恼,您可以尝试从下面找到您想要的答案。
面向群体
有数据库开发经验的人员
对数据/数据库感兴趣的人员
致力于数据分析的人员
热爱SQL的人员
废话不多说,直接上干货
1、如果目前您还选择数据库,数据处理是一次性的,您可以选择Mysql数据库。安装简单,处理百万及以上的数据量足够。
2、如果您已经安装好数据库了。您不妨从如下几个方面检查是否可以提升数据处理性能:
SQL 优化:
1、用多少查多少,例如,查询用户表用户姓名
select * from user a order by id ;
欢迎大家来到IT世界,在知识的湖畔探索吧!
替换为:
如果只需要用户名称,* 可以替换成 user_name,另外如果没有要求尽量不要加order by
欢迎大家来到IT世界,在知识的湖畔探索吧!select user_name from users a ;
如果只需要用户名称,如果要查某人是否存在:可以加索引。
select user_name from users a where user_name='zhang san' ;
2、应尽量避免在 where ⼦句中对字段进⾏ null 值判断,null值不走索引,如:
欢迎大家来到IT世界,在知识的湖畔探索吧!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=1
union all
select 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性能问题/千万级数据优化/亿级数据优化
编:昊几居
作者介绍:资深大数据库开发工程师,专注数据治理方向。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/13789.html