mysqlsql语句太长_MySQLSQL语句过长引起的问题
我现在做数据统计,后台数据库⽤的是MySQL。有⼀个常⽤的需求,查询未订购⽤户的访问PV(⽤户唯⼀性标识是⽤户⼿机号);
第⼀种写法:
SELECT COUNT(1) FROM day_resinlog_2012_06_12 WHERE mobile_number NOT IN
之前下过mysql现在重新下载mysql(SELECT DISTINCT mobile_number FROM tbl_cartoon_order);
第⼆种写法:
2.1 通过 SELECT DISTINCT mobile_number FROM tbl_cartoon_order 获得⼀个List 结合,将获得的⼿机号的集合拼接成⼀个字符串当SELECT COUNT(1) FROM day_resinlog_2012_06_12 WHERE mobile_number NOT IN (xxxxx)中的xxxxx;
评论:第⼀种写法使⽤了⼦查询,这样速度⽐较慢,⼀般是我们不⽤它的原因,也是我们选择第⼆种写法的原因;
第⼆种写法表⾯上没有什么问题,其实也有⼀个潜在的风险,假如我们的订购⼿机号有⼏百万,就可能会引起服务器报错。因为⼀条SQL如果很长,超过了MYSQL服务器配置⽂件(windows下的my.ini)中的max_allowed_packet的量,就会报错。解决办法是改变
max_allowed_packet的量。
有没有⼀个更好的办法呢?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论