2010-07-25 24 views
3

我在PHP中有幾個代碼來完成MySQL可以做的工作。把工作交給MySQL還是PHP?

如排序,從不同的MySQL表合併每一個數據,等等

最近,我發現我可以做所有這些東西與一個MySQL查詢。

我想知道是否將MySQL能夠工作的工作交給MySQL或PHP。 效率,速度等。

謝謝你,如果你讓MySQL的處理這項工作

+0

我希望得到一個明確的答案。通常我只是使用PHP,因爲我的PHP技能比我的SQL技能更強大,但如果它們確實快得多或效率更高,我可能會更多地使用內置的MySQL函數。 – ubiquibacon 2010-07-25 05:52:32

回答

2

如果您在PHP這樣做,你只是重新實現是,MySQL已經具有的功能。它遠離最優化的解決方案,因此速度更慢。

您應該明確地在SQL查詢中執行此操作。

2

你的表現會增加。

1

在MySQL中做它。毫無疑問,這是更有效的。比如,PHP會使用更多的內存。

2

在MySQL中執行此操作會更好。首先,它優化了數據的排序算法,並可以利用創建的索引。此外,如果它正在合併和過濾,則最終將從數據庫中傳輸更少的數據。

2

數據庫經過優化,可在檢索數據時執行這些功能。在數據庫級別排序比在PHP上編寫數十行代碼更容易閱讀

在MySQL中有可用的字符串函數來合併數據,同時從數據庫中檢索數據。

我絕對會建議MySQL。

黑氈帽Luniya

1

沒問題:MySQL是爲此而構建的。 要添加一些東西,也許你會對構建聯合表查詢(多個表查詢)感興趣。這是非常有用的,非常簡單。例如:

$query = "SELECT DISTINCT post.title as title, post.id as id, 
        product.imageURL as imageURL, product.dueDate as dueDate 
        FROM post, product 
        WHERE post.status='saved' 
        AND post.productURL=product.linkURL 
        AND post.userEmail='$session[userEmail]' 
        AND NOT EXISTS(
         SELECT publication.postId FROM publication 
         WHERE publication.postId=post.id 
         ) 
        ORDER BY post.id"; 

這是我構建的一些代碼的一個簡單示例。 事情是它合併了2個不同的表格,其中post.productURL = product.linkURL的限制。它也使用否定,當你正在尋找的集合沒有被任何條件定義,而是沒有定義時,它是非常有用的。 您也可以通過在MySQL中構建視圖來避免這種情況。

我是新手,所以我希望它有幫助。乾杯。