我有两张桌子:
表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
。
如果我只想要一个客户的订单并希望按订单 ID 对它们进行排序,则可以不使用文件排序。
所以问题是:是否有可能(可能是相关的子查询?)在不需要文件排序的情况下获得概述的结果集?(即影响连接订单的顺序,与它们连接的表中的字段无关)