私は2つのテーブルを持っています:
テーブルorders
には、すべての顧客のすべての注文が保持されます (簡略化)。
Field Type Null Key Default Extra
==================================================================
id int(11) NO PRI NULL auto_increment
customerId int(11) NO PRI NULL
...
に独自のインデックスがあります(customerId, id)
。
テーブルcustomerindex
には、顧客に関する情報が保持されます (簡略化)。
Field Type Null Key Default Extra
=========================================================
customerId int(11) NO PRI NULL
name varchar(64) NO MUL NULL
...
に全文索引がありますname
ここで、(フルテキスト インデックスを使用して) 名前で顧客を検索し、注文を一覧表示したいと考えています。
私が基本的に必要とするのは、次のようなものです:
customerX order5
customerX order4
...
customerY order6
customerY order5
...
顧客ごとに、IDで注文した注文が必要ですが、顧客自体の注文は重要ではありません。
私がすることは
SELECT ...
FROM `customerindex` AS `idx`
LEFT JOIN `orders` ON (`orders`.`id` = `idx`.`id`)
WHERE MATCH ... AGAINST ...
ORDER BY `orders`.`customerId`, `orders`.`id` DESC
しかしもちろん、これには が必要filesort
です。
1 人の顧客の注文のみが必要で、注文 ID で並べ替えたい場合、これはファイルソートなしで可能です。
したがって、問題は次のとおりです。ファイルソートを必要とせずに概説された結果セットを取得することは、どういうわけか可能ですか (おそらく相関サブクエリですか?)。(つまり、結合されたテーブルのフィールドに関係なく、結合された注文の順序に影響を与えます)