我创建了一个 vert 诊所的数据库。该 DB 包含表:Drug (code)、Animal(id)、Prescription (id_animal、code_drug、start_date、end_date)。我必须优化这个查询,因为它很慢,但我不知道如何:
SELECT D.Code, P.Administration, P.End_date
FROM Drug D, Prescription P, Animal A
WHERE P.Id_animal = A.Id AND P.Code_drug = D.Code AND A.id = 3 AND (P.End_date >= CURDATE() OR P.End_date IS NULL)
ORDER BY P.End_date;
最佳答案
我会使用内连接而不是交叉连接来重新处理您的查询:
select d.code,
p.administration,
p.end_date
from drug as d
inner join prescription as p
on d.code = p.code_drug
inner join animal as a
on p.id_animal = a.id
where p.end_date >= curdate()
or p.end_date is null
您也很有可能需要对表进行适当的索引,但如果不了解表的结构以及它们的确切创建方式,则很难判断。
关于mysql - 优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324779/