希岛爱理av免费一区二区,成人性教育av免费网址,欧美7777,在线免费日韩片

十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
南昌百恒網絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡微信小程序

百恒網絡

南昌百恒網絡

數據查詢過程中能不能用in、not in 、exists

百恒網絡 2014-06-09 5587

在做數據庫查詢過程中,遇到跨表查詢,即需要用到另一張表的ID來列出當前表的記錄,通常情況我們會想到跨表查詢,結合子查詢只要使用一句SQL語就可以解決問題,例如:$sql="select * from table1 where Id not in(select QuestionId from table2 where UserName='".$UserName."')",大多數初級開發者都認為,用查詢關鍵肯定是最優的實現方法,所以大都初級開發都會用到in或exists等語句,對數據記錄比較少的兩張表查詢,但沒有明顯示區別,但是當記錄才達到幾萬條,同時有十幾個人訪問,就會明顯感覺到延時,所謂的卡機,就是算法執行的效率不高出現的原因,針對這樣的情況,我們建議開發者盡量避免使用這些關鍵詞那么用什么方法解決這種問題呢?

解決方法是,我們可以用最原始的嵌套循環,第一把子查詢的中的ID一個個讀出來,再在table1 中進行查詢,這樣執行的速度比較快.代碼如下所示:

$sql="select QuestionId from table2 where UserName='".$UserName."'";

$result=$conn->query($sql);

if ($result)

{

while($row = $result->fetch_array())

{

$psql ="select * from table1 where id=".$row['QId'];

$presult = $conn->query($psql);

if ($presult){

$rowp = $presult->fetch_array();

…… }

}

百恒技術工程師建議大家,若是小型數據查詢,使用in,exists是沒有任何問題,盡量縮小雙邊的查詢范圍,以減輕資源的消耗.對于大型數據查詢,盡量不要用.

希望此文章能對廣開發者有所幫助,原創文章出自:百恒網絡 如轉載請注明出處!專業,專注于南昌網站建設,為用戶提供高品質的網絡產品及優質服務是我們始終的追求.

400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡小程序

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
主站蜘蛛池模板: 分宜县| 沁水县| 长沙市| 商丘市| 水富县| 万安县| 龙江县| 双牌县| 隆回县| 拜城县| 南京市| 佛冈县| 弥渡县| 苍梧县| 昌乐县| 容城县| 张北县| 千阳县| 象山县| 三都| 铜梁县| 织金县| 阳江市| 汝州市| 石河子市| 宕昌县| 漯河市| 金川县| 遵义县| 曲松县| 沙河市| 黔东| 白水县| 玉屏| 安福县| 晋城| 榆中县| 夏津县| 宁强县| 育儿| 沧州市|