[英]Performance : SQL Queries vs Server-Side PHP Loops (MYSQL vs PHP)
我沒有看到關於這個主題的很多信息並且需要一些數據。 我是新手使用復雜的MySQL查詢,我想知道復雜查詢的性能成本與簡單查詢相比,然后運行服務器端PHP計算。
例如:
'簡單'查詢:
SELECT id as ID, date(x_date), v_price as price
From tableX
WHERE v_price IN
(
select MIN(v_price) from tableX
GROUP BY week(x_date)
)
)
現在假設我想計算類似價格發生的次數。
我可以用兩種方式做到這一點。
A)使用foreach循環服務器端php並計算數據
B)在sql中做另一個選擇
group by price
ORDER BY COUNT(price) DESC
哪種方式最好? 通過SQL或服務器代碼(PHP)
什么是性能成本,時間,服務器負載等.....
首先,在數據庫中完成工作幾乎總是更好。 對於每個有人想要進行RBAR(逐行激動行)處理的上下文,會多次討論這個問題。
其次,這個“簡單”查詢不太可能做你想要的:
SELECT id as ID, date(x_date), v_price as price
From tableX
WHERE v_price IN (select MIN(v_price) from tableX FROM tableX GROUP BY week(x_date))
這將返回tableX
中所有行,其中最低價格與任何一周的最低價格相匹配。 更有可能的是,你想:
SELECT id as ID, date(x_date), v_price as price
From tableX
WHERE (yearweek(x_date), v_price) IN (
select yearweek(x_date), MIN(v_price)
from tableX
group by yearweek(x_date)
);
請注意,這也需要考慮年份。
讓我們考慮下面的例子
select MIN(v_price) from tableX
這將做的是它將通過索引查找tableX並找到最低價格。
現在讓我們嘗試在DB服務器之外進行。 首先,您必須從DB獲取數據
select v_price from tableX
我希望你已經看到了差異。 這意味着從數據庫端的存儲中提取大量數據並進行大量數據傳輸。 即使您的應用程序和數據庫將在同一台機器上,也意味着消耗大量內存並花費大量CPU周期。
如此簡單的答案就是在DB中進行,因為它幾乎總是更快,資源更少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.