发布网友
共4个回答
懂视网
第二种写法表面上没有什么问题,其实也有一个潜在的风险,假如我们的订购手机号有几百万,就可能会引起服务器报错。因为一条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
评论:第一种写法使用了子查询,这样速度比较慢,一般是我们不用它的原因,,也是我们选择第二种写法的原因;
第二种写法表面上没有什么问题,其实也有一个潜在的风险,假如我们的订购手机号有几百万,就可能会引起服务器报错。因为一条SQL如果很长,超过了MYSQL服务器配置文件(windows下的my.ini)中的max_allowed_packet的量,就会报错。解决办法是改变max_allowed_packet的量。
有没有一个更好的办法呢?
热心网友
可以将sql语句保存成脚本文件,然后载入脚本文件,执行脚本吧。追问在PHP中怎么操作?程序怎么写
热心网友
具体看看语句,是否可以将部分sql做成视图 ?
太夸张了吧, 1个insert还是多个insert ?追问一个insert 多个就不会这么长了。当然在PHPMYADMIN中执行是没有问题的
追答那就是这个函数的问题了,mysql_query
有设置字符长度的方法吗,如果没有,那只能换其他办法了。
热心网友
楼上正解。