Mysql 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); 第二種寫法: www.2cto.com 通過 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的量。 作者 lovemelovemycode