Jquery中文网 www.jquerycn.cn
Jquery中文网 >  数据库  >  mysql  >  正文 Mysql中由于SQL语句过长引起的问题

Mysql中由于SQL语句过长引起的问题

发布时间:2015-10-20   编辑:www.jquerycn.cn
做数据统计时,后台数据库使用的是MYSQL。有一个常用的需求,查询未订购用户的访问PV(用户唯一性标识是用户手机号);

做数据统计时,后台数据库使用的是MYSQL。
有一个常用的需求,查询未订购用户的访问PV(用户唯一性标识是用户手机号);

写法一:
 

复制代码 代码如下:
SELECT COUNT(1) FROM day_resinlog_2012_06_12 WHERE mobile_number NOT IN
(SELECT DISTINCT mobile_number FROM tbl_cartoon_order);

写法二:
通过 SELECT DISTINCT mobile_number FROM tbl_cartoon_order 获得一个List<String> 结合,将获得的手机号的集合拼接成一个字符串当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群:161228069 交流沟通。

您可能感兴趣的文章:

[关闭]