我有查询:

SELECT Name, Surname, Telephone, PersonID FROM Client WHERE Telephone =
(SELECT MAX(Telephone) FROM Client) OR PersonID = (SELECT MAX(PersonID)
FROM Client);


结果:

| Name   | Surname  | Telephone | PersonID    |

| Tyler  | Henry    | 998778781 | 38568215856 |

| Brooke | Thornton | 617196573 | 99412132661 |


还有什么其他查询可以给我相同的结果?我必须在优化方面比较两个查询。

最佳答案

您可以使用UNION优化:

SELECT Name, Surname, Telephone, PersonID
FROM Client
WHERE Telephone = (SELECT MAX(Telephone) FROM Client)
UNION
SELECT Name, Surname, Telephone, PersonID
FROM Client
WHERE PersonID = (SELECT MAX(PersonID) FROM Client)


如果所选列的子集为UNIQUE,则查询将返回相同的结果。

给定在(Telephone)(PersonID)上的索引,在大表上查询也应更快。原因是MySQL不能为每个表和(子)查询使用多个索引。将查询分为两个子查询将允许引擎使用两个索引。

10-08 17:23