簡體   English   中英

優化查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM