程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql SQL語句過長引起的問題

Mysql SQL語句過長引起的問題

編輯:MySQL綜合教程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved