[英]Optimization query
我創建了一個獸醫診所的數據庫。 該數據庫包含以下表格:葯物(代碼),動物(id),處方(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
您很有可能需要在表上使用適當的索引,但是如果不了解表的結構以及它們的確切創建方式,就很難分辨出來。
SELECT P.Administration, P.End_date,
( SELECT CODE
FROM Drug
WHERE D.code = p.Code_drug
) CODE
FROM Prescription P
-- JOIN Animal A ON P.Id_animal = A.Id
WHERE P.Id_animal = 3
AND (P.End_date >= CURDATE()
OR P.End_date IS NULL
)
ORDER BY P.End_date;
搜索動物ID 3時,您不必要地加入了動物表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.