萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> sql中LEFT JOIN拆分成多條SQL語句 提高sql性能

sql中LEFT JOIN拆分成多條SQL語句 提高sql性能

LEFT JOIN 在有些時間可以提高我編程的效綠但不一定能提高數據查詢性能了,小編不怎麼喜歡使用LEFT JOIN了查詢了除非沒有辦法了才會使用LEFT JOIN了,多半都是分開來查的,下面我們來看一篇LEFT JOIN拆分成多條SQL語句 提高sql性能文章。


本文講解如何把一條帶有一個或多個left join或right join的sql語句拆分成多條sql語句。MySQL進行連表查詢效率是很低的,特別是數據很大,而且並發量很高的情況,索引都無法解決問題,最好的辦法就是把sql語句拆分成多條單表查詢的sql。


我們公司電商網站現在要做網站服務化,用java做中間件,PHP調用java接口獲取數據,數據表也進行了拆分,分庫,要求不使用連表查詢,有連表查詢的sql語句想辦法拆分多條sql語句,然後統一使用java接口。

這樣做的目的一是為了網站服務化做調整,數據的增刪查改都封裝到具體的業務裡面,二是為了提高性能,減少數據庫壓力,說來說去還是為了提高效率。

我們看看一個join多張表的sql如何拆分多條sql。


select u1.uid,u1.uname,u2.add from user as u1 left join userinfo as u2 on u1.uid=u2.uid left join money as u3 on u1.uid=u3.uid where u1.country='c'

這條sql語句left join三張表,分別是user作為主表,連userinfo,money表。首先可以查出所有user的數據,有了第一條拆分的sql:


select uid,uname from user where country='c'

由於條件是user.uid=userinfo.uid,所以可以把取得的uid用”,”連接,第二個拆分的sql如下:


select uid,add from userinfo where uid in(32,34,23,23)

這樣得出了符合第一個left join條件下的uid,uname和add字段的結果,其實到這裡就已經實現了以上left join語句的需求,如果還要查詢money表的字段,以此類推,把uid作為in的條件查money表。

copyright © 萬盛學電腦網 all rights reserved