【发布时间】:2023-03-12 10:21:01
【问题描述】:
此查询返回 16000 条记录,大约需要 3-4 分钟!我在查询末尾添加了 LIMIT 10,但没有任何区别。
$sql = "
SELECT *,GROUP_CONCAT(`firstName`,' ',`lastName` SEPARATOR '<br/>') AS `users`
from (SELECT `frk_item`.`itemId`,`frk_quotes`.`quoteId`,`frk_item`.`title`,`quoteno`,`gmp`,`value`,`values`,`status`,`dates`,`firstName`,`lastName`,`name`,`frk_quoteuser`.`userid`
FROM `frk_item` INNER JOIN `frk_quotes` ON `frk_item`.`itemId` = `frk_quotes`.`itemId`
LEFT JOIN `frk_project` ON `frk_project`.`projectId` = `frk_item`.`projectId`
LEFT JOIN `frk_quoteuser` ON `frk_quoteuser`.`quoteId`=`frk_quotes`.`quoteId`
LEFT JOIN `frk_member` ON `frk_member`.`memberId` = `frk_quoteuser`.`userId`
WHERE `frk_quotes`.`varis`='original' AND `frk_quotes`.`status`!='0'" . $filter . "
order by `frk_item`.`quoteno` DESC) as `poop`
GROUP BY `quoteId`
ORDER BY `quoteno` DESC";
更新: Rick James 关于添加索引的建议解决了这个问题。现在加载记录需要 2-3 秒
【问题讨论】:
-
该查询的
explain显示了什么? -
感谢保罗编辑它。抱歉,你说的解释是什么意思?
-
谢谢,我应该添加到我之前的评论中,需要查看同时显示两个表的索引的部分。为两个表而不是图片添加来自
SHOW CREATE TABLE tableName的输出可能更容易。 -
请阅读此内容,尤其是。关于查询性能的部分。 meta.stackoverflow.com/questions/271055/… 那么请edit您的问题提供我们需要帮助您的信息。
-
请以可用的形式分享表格结构(作为文本,而不是作为图像!)
标签: php mysql query-performance