gpt4 book ai didi

mysql - 如何将 MySQL 查询执行时间从 90 秒减少到 5 秒以内甚至 1 秒

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:49 25 4
gpt4 key购买 nike

我正在使用 MySQL 数据库。当我执行一个主表(2 万行)与其他 5 个表连接的查询时,需要 90 秒才能返回结果。然后我将索引添加到每个条件(where 子句)中。然后执行时间从 90 秒下降到 45 秒,然后我尝试只选择必要的字段而不是全部(*),它需要 25 秒。我该怎么做才能让它降到5秒以内甚至1秒?

SELECT
ap.propertyid, ap.type_market,
ap.market_sale_price, ap.sale_from, ap.sale_until, ap.property_salepsf,
ap.rent_from, ap.property_rent_until, ap.property_rentpsf, ap.title,
ap.street, ap.suburbs, ap.state, ap.bedrooms, ap.bathrooms, ap.carport,
ap.buildup_area, ap.builtup_area_from, ap.builtup_area_to,
ap.land_area, ap.land_area_from, ap.land_area_to,
ap.status AS prop_status, ap.datecreate AS uploadedOn, type_property.name, (
SELECT name
FROM gallery
WHERE
propertyid = ap.propertyid
ORDER BY frontpage
LIMIT 0, 1
) AS picture,
uom_mst.uom_shortcode,
agent_profile.person, agent_profile.mobile, agent_profile.electronicmail, agent_profile.agent_pix, agent_profile.agent_pix_crop,
country.country_currency_html AS currency,
owner_profile.oname, owner_profile.omobile, owner_profile.oemail
FROM agentproperty ap
LEFT JOIN agent_profile ON (ap.agentid = agent_profile.agentid)
LEFT JOIN type_property ON (ap.type_property = type_property.rid)
LEFT JOIN uom_mst ON (ap.property_bua_uom = uom_mst.uom_id)
LEFT JOIN country ON (ap.property_ctry = country.country_id)
LEFT JOIN owner_profile ON (ap.propertyid = owner_profile.propertyid)
WHERE
ap.status = 'active' AND
agent_profile.status = 'active' AND
ap.property_type = '1' AND
getCompanyID(ap.propertyid) = '001' AND
ap.agentid = '100010001'
GROUP BY ap.propertyid
ORDER BY ap.datecreate DESC
LIMIT 200, 10

最佳答案

对您的查询运行 EXPLAIN PLAN,看看 MySQL 对此有何评价。

确保 JOIN 中涉及的所有列都有与之关联的索引。

JOIN 中的六个表对于数据库来说是一项大量工作。我建议查看重新排序 JOIN 是否有任何效果。如果您将 JOIN 从最严格到最少进行排序,您可能会减少所需的工作。

关于mysql - 如何将 MySQL 查询执行时间从 90 秒减少到 5 秒以内甚至 1 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716953/

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