我有一个基本的 HFSQL 数据库,有 3 个表:Company、Person 和 Worker。每个表有约 5 列和 5000 个条目。Worker 有一个名为 IDPerson 的人的外键,以及一个名为 IDCompany 的实体的外键。
我测试了以下 2 个查询(我只更改了 INNER JOIN 的顺序):
QUERY 1(~5ms 执行时间)
SELECT *
FROM Person
INNER JOIN Worker ON Worker .IDPerson = Person.IDPerson
WHERE Worker.Company = 1;
QUERY 2(~50ms 执行时间)
SELECT *
FROM Worker
INNER JOIN Person ON Worker .IDPerson = Person.IDPerson
WHERE Worker.Company = 1;
找到的条目数相同,但执行时间慢了 10 倍。为什么? INNER JOIN 不应该是对称的吗?为什么在使用 WHERE 子句时,订单的性能会提高 10 倍?
请帮助我理解这种奇怪的行为!
PS:如果我只选择一些列而不是“ ”* ,性能问题是相同的