Mysql 我怎样才能加快这个报告的速度?
有人能告诉我为什么这么慢,以及如何纠正它吗?即使上面有“限制1”,运行也需要15秒。即使没有子查询,仍然需要10秒Mysql 我怎样才能加快这个报告的速度?,mysql,Mysql,有人能告诉我为什么这么慢,以及如何纠正它吗?即使上面有“限制1”,运行也需要15秒。即使没有子查询,仍然需要10秒 SELECT SP_GETCODECODE(t9mod) AS 'Mod', p.rrnhs AS NHS, CONCAT(p.idfnam, ' ', p.idnam) AS 'Name', (SELECT e.c1k FROM electrolytes e WHERE p.oid = e.fk_oid
SELECT
SP_GETCODECODE(t9mod) AS 'Mod',
p.rrnhs AS NHS,
CONCAT(p.idfnam, ' ', p.idnam) AS 'Name',
(SELECT
e.c1k
FROM
electrolytes e
WHERE
p.oid = e.fk_oid
ORDER BY e.c1date DESC
LIMIT 1) AS 'Potassium'
FROM
timeline t1
LEFT JOIN
person p ON t1.fk_oid = p.oid
WHERE
t1.oid = (SELECT
t2.oid
FROM
timeline t2
WHERE
t2.fk_oid = t1.fk_oid
ORDER BY t2.oid DESC
LIMIT 1)
AND t9mod IN (19301 , 19302,
19304,
19309,
19371,
5106,
5120,
140055,
140067)
AND p.isactive = - 1
LIMIT 1
这里的想法是从时间轴中提取所有记录,其中一个T9MOD代码作为WHERE中的顶部条目。以及PERSON表中的患者姓名,然后子查询从电解质中提取患者最新的钾
在研究和编译这篇文章时,我已经用尽了我的编码能力,但作为一名新手,我无法理解如何让它更快
谢谢
Mike请发布create table语句,包括所有相关表的索引和记录计数。请同时发布上述查询的解释。首先你应该声明索引,然后尽量避免子查询。我不确定它是否能像预期的那样工作,但我会这样做:
选择SP_GETCODECODE(t9mod)作为'Mod',选择p.rrnhs作为NHS,选择CONCAT(p.idfnam',p.idnam)作为'Name',e.c1k作为时间线t1中的“钾”在t2上连接时间线t2.fk_oid=t1.fk_oid左连接人p在t1.fk_oid=p.oid左连接电解质e在p.oid=e.fk_oid上,其中t9mod IN(19301930219304193091937151065140067)和p.isactive=-1组按t1.oid顺序按t2.oid描述,e.c1date DESC LIMIT 1
请发布create table语句,包括所有相关表格的索引和记录计数。请同时发布上述查询的解释。首先你应该声明索引,然后尽量避免子查询。我不确定它是否能像预期的那样工作,但我会这样做:选择SP_GETCODECODE(t9mod)作为'Mod',选择p.rrnhs作为NHS,选择CONCAT(p.idfnam',p.idnam)作为'Name',e.c1k作为时间线t1中的“钾”在t2上连接时间线t2.fk_oid=t1.fk_oid左连接人p在t1.fk_oid=p.oid左连接电解质e在p.oid=e.fk_oid上,其中t9mod IN(19301930219304193091937151065140067)和p.isactive=-1组按t1.oid顺序按t2.oid描述,e.c1date描述限制1