mysql - 优化查询

标签 mysql database performance optimization

我创建了一个 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/

相关文章:

php - 如果数据字段为空,$mysqli->prepare 返回 false

php - MYSQL - 输出不正确?

python - Python中文件操作的性能

使用 Azure CDN 性能下降?

mysql - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Duplicate entry 'USER' for key 'PRIMARY'

java - JPA - 将对象保存在一起

MySQL utf8mb4 unicode(笑)

sql - 数据库只读但只有少数表可写

database - 如何在QLDB中按降序获取记录?

php - 基于重叠实体数组创建新数组