我正在開發一個Web應用程序,讓用戶搜索數據庫中的項目。這些項目分爲幾類。根據其字段值,每個返回的搜索項都顯示不同。目前我建立了一個類來處理顯示,另一個處理搜索。搜索類使用多個用戶輸入構建SQL查詢,在數據庫中查詢與用戶輸入相匹配的項目的ID,並將數組中的ID發送到顯示類。如何優化此搜索結構?
執行此代碼的摘錄:
//the sql query is actually a little more complex than this
$query = "SELECT items.id FROM items, subcategories WHERE {$name} AND items.`base_school` = '{$_SESSION['base_school']}' AND items.subcategory = subcategories.id AND subcategories.parent_category = {$search_category} ORDER BY `time_added` DESC {$limit}";
$result = $DB_CONNECTION->query($query);
$newly_added = array();
while (list($id) = $result->fetch_row()) $result[] = $id;
searchDisplay::print_result($result);
的顯示類查詢數據庫的每個項目的一個在另一個之後的全部細節,並將其顯示,因爲它應該被顯示。
第一次查詢數據庫並將數據存儲在數組中然後通過數據庫查詢數據庫的全部詳細信息(來自3個不同表的大約23個字段),是否會更好/更快地查詢數據庫該數組的顯示類,而不是讓顯示類使用項唯一ID來查詢每個項目的數據庫?我目前的解決方案現在運行良好,但我需要知道,當數據庫開始增長時(約500,000行),它們是否會對我的方法造成任何問題。其次,使用由用戶提供的若干搜索條件來過濾來自數據庫的數據。用一些能夠容納所有用戶條件的聯合來構建一個複雜的查詢,或者編寫一個容納主要過濾器的簡單查詢,然後使用PHP來過濾剩餘的幾個不符合搜索條件的結果會更好嗎?
這不會減慢PHP本身的速度,並且會影響頁面的總體分析時間,甚至比MYSQL還差嗎? MYSQL具有非常好的數據處理能力,並且可以比PHP更好地處理數據。我需要對此有更深入的瞭解。 –