私はPHPで書かれた検索ページを持っており、MySQLデータベースを検索する必要があり、その結果をソート可能にする必要があります。この検索ページには、多くのユーザーがアクセスできます(いつでも> 1000)。MySQL一時テーブルを使用して検索結果を保存できますか?
しかし、非常に遅いので、検索結果をMySQLで並べ替えることはできません。
私は、一時テーブル(ないMySQLの一時テーブル)に各検索結果を保存すると思って、テーブル名は、このような参照のために別のテーブル内に格納されている:
| id | table_name | timeout |
-----------------------------
| 1 | result_1 | 10000 |
| 2 | result_2 | 10000 |
その後、私は使用することができますテンポラリテーブルを使用して、クエリを再構築する必要なしに(必要に応じて)検索結果を並べ替えることができます。
各テーブルは、指定されたタイムアウトに従って削除されます。
クエリで使用されている既存のテーブルの構造を変更できないとすれば、これは良い解決策ですか、それとも良い方法がありますか?ご意見をお聞かせください。
おかげ
テーブルが正しく設定されている場合、MySQLでソートすることはその1、ほぼすべての選択肢よりも高速でなければなりませんdbが設計したもののうち –
キーワードの頻度などに基づいてランク付けされたソート結果が必要な場合は、SQLのcase文を使用して追加のソート列を生成します。新しいテーブルにクエリ結果を格納すると、クエリが高速になります。挿入する余分なデータがあれば、パフォーマンスが低下する可能性があります。 –
私は@ダゴンに同意します。なぜそれはmysqlの結果を並べ替えることができないのでしょうか?データベースシステムは、フィルタリングとソートで高速に設計されています。それはインデックスの問題、またはテーブルのデザインの問題になりますか? – iWantSimpleLife