2016-06-08 89 views
-2

如何將這兩個SQL查詢合併爲一個查詢以獲得更高的速度和效率?合併多個SQL查詢以提高效率

SELECT price FROM table LIMIT 30 
SELECT AVG(price) as avg FROM table 
+0

我不完全確定你想在這裏優化什麼......查詢運行緩慢嗎,還是你只是想做一些過早的微型優化? – Siyual

+0

你會如何建議「結合」他們?一個是價格清單,另一個是這些價格的平均值。你想如何分組或顯示這些信息? – Dresden

+0

@Siyual我有大約2000萬行的數據,並希望一切都儘可能快 –

回答

0

它不會更快或更有效的,但我可以看到它的需求(如試圖將值比較平均),這樣的事情:

SELECT t.value, avgSubQ.theAvg, t.value/avgSubQ.theAvg AS relativeToAvg 
FROM table AS t 
INNER JOIN (SELECT AVG(value) AS theAvg FROM table) AS avgSubQ 
LIMIT 30; 
0

的平均意願生成1條記錄,你可以使用交叉連接。

SELECT price, B.mavg 
FROM table 
CROSS JOIN (SELECT AVG(price) as mavg FROM table) B 
LIMIT 30 
0

嘗試此查詢 SELECT價格,AVG(價格)爲平均從表限制30

這裏的每一行都將複製的平均價格,但你會得到你在一個查詢想要什麼。

+0

其實,你只會得到一個隨機價格;每次結果都將是一行。 – Uueerdo

+0

試試這個:select price,avgs from table,(select avg(price)as avgs from table)as tx; – challengerLPF