我有一個用PHP編寫的搜索頁面,它需要在MySQL數據庫中搜索,並且結果需要排序。這個搜索頁面將被許多用戶訪問(任何時候> 1000)。我可以使用MySQL臨時表來存儲搜索結果嗎?
但是,在MySQL中排序搜索結果是不可行的,因爲它會很慢。
我想存儲每個搜索結果到一個臨時表(不MySQL的臨時表),和表名存儲在另一個表內像這樣的參考:
| id | table_name | timeout |
-----------------------------
| 1 | result_1 | 10000 |
| 2 | result_2 | 10000 |
然後我可以使用臨時表在任何需要時對任何搜索結果進行排序,而無需重新構建(通過一些修改)查詢。
根據指定的超時時間,每個表將被丟棄。
假設我無法修改查詢中使用的現有表的結構,這是一個好的解決方案還是有更好的方法?請指教。
感謝
數據庫指定的用途。 – 2011-10-19 02:01:47
如果您需要根據關鍵字頻率或某些類別對排序結果進行排序,請使用SQL case語句生成額外的排序列。將查詢結果存儲在新表中會導致更快的查詢,這很少見 - 更可能是您插入的額外數據會降低性能,恕我直言。 –
我同意@Dagon。爲什麼在MySQL中排序結果並不值得一提?數據庫系統旨在快速篩選和分類。它可能是一個索引問題,或表設計問題? – iWantSimpleLife