Maison > base de données > tutoriel mysql > MySQL SQL语句过长引起的问题

MySQL SQL语句过长引起的问题

WBOY
Libérer: 2016-06-07 17:14:41
original
1937 Les gens l'ont consulté

第二种写法表面上没有什么问题,其实也有一个潜在的风险,假如我们的订购手机号有几百万,就可能会引起服务器报错。因为一条SQL如

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

第一种写法:

SELECT COUNT(1) FROM day_resinlog_2012_06_12 WHERE mobile_number NOT IN

(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的量。

有没有一个更好的办法呢?

linux

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal