gpt4 book ai didi

mysql - 理解为什么这个查询很慢

转载 作者:行者123 更新时间:2023-11-29 12:25:00 25 4
gpt4 key购买 nike

下面的查询非常慢(大约需要 1 秒),但仅搜索大约 2500 条记录(+内部连接表)。如果我删除 ORDER BY,查询运行的时间会少得多(0.05 或更短)或者,如果我删除“# 用于选择未指定 ProfilePhoto 的位置”下方嵌套选择的部分,它也会运行得很快,但我需要将这两个都包括在内。

我在以下位置有索引(或主键):tPhoto_PhotoID、PhotoID、p.Enabled、CustomerID、tCustomer_CustomerID、ProfilePhoto (bool)、u.UserName、e.PrivateEmail、m.tUser_UserID、Enabled、Active、m.tMemberStatuses_MemberStatusID、 e.tCustomerMembership_MembershipID、e.DateCreated(我有太多索引吗?我的理解是在我使用 WHERE 或 ON 的任何地方添加它们)

查询:

SELECT e.CustomerID,
e.CustomerName,
e.Location,
SUBSTRING_INDEX(e.CustomerProfile,' ', 25) AS Description,
IFNULL(p.PhotoURL, PhotoTable.PhotoURL) AS PhotoURL
FROM tCustomer e
LEFT JOIN (tCustomerPhoto ep INNER JOIN tPhoto p ON (ep.tPhoto_PhotoID = p.PhotoID AND p.Enabled=1))
ON e.CustomerID = ep.tCustomer_CustomerID AND ep.ProfilePhoto = 1
# used to select where no ProfilePhoto specified
LEFT JOIN ((SELECT pp.PhotoURL, epp.tCustomer_CustomerID
FROM tPhoto pp
LEFT JOIN tCustomerPhoto epp ON epp.tPhoto_PhotoID = pp.PhotoID
GROUP BY epp.tCustomer_CustomerID) AS PhotoTable) ON e.CustomerID = PhotoTable.tCustomer_CustomerID
INNER JOIN tUser u ON u.UserName = e.PrivateEmail
INNER JOIN tmembers m ON m.tUser_UserID = u.UserID
WHERE e.Enabled=1
AND e.Active=1
AND m.tMemberStatuses_MemberStatusID = 2
AND e.tCustomerMembership_MembershipID != 6
ORDER BY e.DateCreated DESC
LIMIT 12

我有类似的查询,但它们运行得更快。

如有任何意见,我们将不胜感激:

最佳答案

直到我们更清楚地了解您在其他查询等中工作之间的问题为止。尝试在 MySQL 客户端中解释 EXPLAIN {YourSelectQuery} 并查看提高性能的建议。

关于mysql - 理解为什么这个查询很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28463732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com