我有查询:
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不能为每个表和(子)查询使用多个索引。将查询分为两个子查询将允许引擎使用两个索引。