可以帮我优化这个查询吗? 感谢您的支持
SELECT cs_annunci.ID, cs_utenti.ID, cs_annunci.Data, cs_annunci.Tipologia,
cs_annunci.Foto1, cs_annunci.Titolo, cs_annunci.IDRazza,
cs_annunci.Cucciolo, cs_utenti.Attivita, cs_annunci.IDRubrica,
cs_annunci.IDSottorubrica, cs_annunci.Position, cs_annunci.Ora,
cs_annunci.Prezzo, cs_annunci.Pedigree, cs_annunci.IDProvincia
FROM cs_annunci, cs_utenti, cs_regioni
WHERE cs_annunci.IDUtente = cs_utenti.ID
AND cs_annunci.IDRegione = cs_regioni.ID
AND cs_utenti.Sospeso = '0'
AND cs_annunci.Attiva = '1'
AND cs_utenti.Cancellato = '0'
ORDER BY cs_annunci.Position DESC, cs_annunci.Data DESC,
cs_annunci.Ora DESC
LIMIT 0, 20
答案 0 :(得分:1)
顺便说一句,我发现这更容易阅读...
SELECT a.ID
, u.ID
, a.Data
, a.Tipologia
, a.Foto1
, a.Titolo
, a.IDRazza
, a.Cucciolo
, u.Attivita
, a.IDRubrica
, a.IDSottorubrica
, a.Position
, a.Ora
, a.Prezzo
, a.Pedigree
, a.IDProvincia
FROM cs_annunci a
JOIN cs_utenti u
ON u.ID = a.IDUtente
JOIN cs_regioni r
ON r.ID = a.IDRegione
WHERE u.Sospeso = 0
AND a.Attiva = 1
AND u.Cancellato = 0
ORDER
BY a.Position DESC
, a.Data DESC
, a.Ora DESC
LIMIT 0, 20
答案 1 :(得分:0)
这个指数很可能有助于提高速度:
INDEX(Attiva, Position, Data, Ora)
完全按照这个顺序。
除了验证行存在之外,查询似乎没有使用cs_regioni
;如果可能,删除对该表的引用。
如果您需要进一步讨论,请提供SHOW CREATE TABLE
,以便我们了解所涉及的数据类型,索引和引擎。