1

これは私のデータベース構造の例です。検索機能を作成する最善かつ最速の方法を知りたいです。

orders_users テーブル:

id || order_id || title || first_name || last_name || email || telephone

orders_details テーブル:

id || transaction_id || date_time || status

現在、次のクエリを実行しています。

SELECT * FROM orders_users WHERE last_name = '%QUERY%'

この後、最初のクエリの結果に対して PHP foreach を実行し、2 番目のテーブルから date_time と status をクエリします。(これは検索結果ページに必要です)

SELECT * FROM orders_details WHERE id = '%ORDER_ID FROM FIRST QUERY%'

これは珍しい名前には問題ありませんが、約 80k 行で「smith」を検索すると、当然のことながら遅くなります。

私が考えた他の唯一の方法は、次のように、1 つのクエリのみを必要とする検索可能な列と結果を別のテーブルに入力することです。

id || order_id || last_name || date_time || status

同じデータで複数のテーブルを更新したくないので、可能であればこのルートをたどらないことをお勧めします。

私の頭はこれについてまっすぐに考えていないと確信しています。ちょっとしたガイダンスが必要です。

4

3 に答える 3

0

以下のような内部結合を使用します。

SELECT ou.id, 
       ou.order_id, 
       ou.last_name, 
       od.date_time, 
       od.status 
  FROM orders_users ou
 INNER JOIN orders_details od 
    ON od.id = ou.order_id 
 WHERE ou.last_name = '%QUERY%'
于 2015-03-25T19:21:20.223 に答える