2009-05-18 34 views
1

我有一個頁面可以根據類別ID從多個類別中拉出許多標題。更快在MYSQL中查詢或使用PHP邏輯

我想知道是否更有意義的是拉出所有的標題,然後通過PHP將它們排序,如果/ ifelse語句或更好地運行多個查詢,每個查詢包含每個類別的標題。

+0

什麼是您的類別ID的來源?你有分類表嗎?你是否獲得所有類別和標題,或者只有選定的類別? – CoderDennis 2009-05-18 16:55:20

+0

我還沒有決定是否我只是每個標題行都有一個類別字段,或者將它分割爲自己的表格。 – Tim 2009-05-18 17:16:43

回答

8

爲什麼不在一個查詢中做到這一點?類似於:

SELECT headline FROM headlines WHERE category_id IN (1, 2, 3, ...); 

如果您使用PHP過濾標題,請考慮您將丟棄多少標題。如果最終只取消10%的頭條新聞,那麼不會像當你扔掉90%的結果時那麼重要。

0

通常最好不要超載數據庫,因爲如果您有很多同時查詢,則可能會造成瓶頸。

但是,在PHP中處理您的處理通常是,因爲Apache會根據需要處理多個請求來分叉線程。

像往常一樣,這一切歸結爲:「有多少流量?

0

MySQL已經可以爲你選擇和排序數據了。我建議懶惰,並使用它。

另外,我會尋找(1)查詢,一次提取所有類別和標題。 ORDER BY類別,發佈日期或其他?

0

每次去數據庫都會花費你一些東西。返回額外的數據,然後你決定忽略花費你的東西。所以你幾乎肯定會更好地讓數據庫進行修剪。

我敢肯定,有人可能會想出一些決定需要哪些數據會使查詢非常複雜,因此數據庫難以優化的情況,而您可以輕鬆地在代碼中執行該操作。但是如果我們談論的是「從類別='體育'的故事中選擇標題,然後選擇」從類別='政治'的故事中選擇標題「,然後」從類別='健康'的故事中選擇標題「等等, (「健康」,「體育」,「政治」)的類別中的標題,後者顯然更好。

2

這類問題總是很難回答,因爲情況決定了最佳的課程。從來沒有一個真正正確的答案,只有更好的方法。根據我的經驗,嘗試使用PHP或數據庫進行工作並不重要,因爲您應該總是嘗試使用緩存引擎(如memcached)緩存任何昂貴操作的結果。這樣你就不會花費很多時間在數據庫或php本身,因爲結果將被緩存並準備好即時使用。當涉及到它時,如果你使用類似xDebug這樣的工具來分析你的應用程序,你認爲你的性能瓶頸只是猜測。