2015-05-20 162 views
0

舊:如何優化這些SQL查詢?

確定我具有用作1個可變WHERE條件在3個初始 查詢。根據我需要爲其他2個查詢創建 查詢的響應。

$var1 = $_GET['id']; $var2 = $_GET['truck']; 
//first two are easy 
SELECT `name`, `address` FROM `company` WHERE `id`='".$var1."' LIMIT 1; //q1 

SELECT `value`, `date` FROM `checks` WHERE `truck`='".$var2."'; //q2 

//the 3rd query may have multiple results and for every result i need **q4** and **q5** to be executed 
SELECT `loadNumber`, `cfnNumber` FROM `loads` WHERE `truck`='".$var2."' ; //q3 


//notice that WHERE conditions use values from **q3** 
SELECT `value`, `date` FROM `finances` WHERE `load`='".loadNumber."'; //q4 

SELECT `address` FROM `stops` WHERE `load`='".loadNumber."'; //q5 

=============

編輯: 我的問題是關於優化,我是想如果可能的話將所有這些查詢合併成一個,希望這將意味着較少的服務器加載時間。我對JOINS不是很熟悉,所以最終this是我的代碼看起來像真實數據。 here是結果,也是實際數據。是否需要優化/加入這些查詢以減少服務器負載?

+0

我想格式化一個JSON輸出的響應。就像[http://jsonblob.com/555d192fe4b0f556a9b83829](https://jsonblob.com/555d192fe4b0f556a9b83829) –

+0

請將這種信息添加到您的問題。並非所有外部代碼/圖像託管站點都可以從所有(愚蠢過濾的)位置獲得。 –

+0

那是什麼?這個json與你的問題沒有什麼共同之處 – Alex

回答

-1

做一個子查詢。是這樣的:

SELECT `item1_t1`, `item2_t1` FROM `table1` WHERE `item2_t1` in (SELECT `item1_t2` FROM `table2` WHERE `item2_t2`='".$var."'); 
2

我建議剛剛過去的3個查詢相結合,保持第一2的是:

SELECT 
    l.`loadNumber`, l.`cfnNumber` , 
    f.`value`, f.`date`, 
    s.`address` 
FROM `loads` l 
LEFT JOIN `finances` f 
ON f.`load`= l.loadNumber 
LEFT JOIN `stops` s 
ON s.`load`= l.loadNumber 
WHERE `truck`='".$var2."' 
+0

謝謝!我認爲這會對我有用。你能告訴我爲什麼你認爲把前兩個分開會更好?儘可能少查詢是否更好? –

+0

不需要。您最好擁有儘可能多的查詢。在你的情況表中沒有任何共同點 - 這就是爲什麼我沒有理由將它們結合起來 – Alex

+0

我真的很感謝你的回答,因爲它幫助我理解了更好一點。不過,我沒有將它標記爲選中,因爲最終它對我沒有任何作用。這是我的工作代碼:http://codepad.org/m8hr6Dol和結果:https://jsonblob.com/555de6e2e4b06ad9c0c422f7。如果您有任何優化建議,您的幫助將不勝感激! –