【发布时间】:2014-05-25 03:15:53
【问题描述】:
我可以以任何不同的方式使用此代码来获得更好的性能吗?
我试过这种方式;
SELECT K.id, M.m_id, K.Sil, K.Banli, K.Foto, K.KullaniciAdi, K.Ad, K.Soyad, K.Gender,
(select rate_id,Rate,Zaman from ratings where UyeID=K.id ORDER BY rate_id DESC LIMIT 1)
但我不能做我想做的事。
这是工作代码。给出我想要的结果:
SELECT K.id, M.m_id, K.Sil, K.Banli, K.Foto, K.KullaniciAdi, K.Ad, K.Soyad, K.Gender,
( SELECT R.mr_id FROM mesajlarreply R
WHERE R.CID=M.m_id
ORDER BY R.mr_id DESC LIMIT 1
) as mr_id,
( SELECT R.Mesaj FROM mesajlarreply R
WHERE R.CID=M.m_id
ORDER BY R.mr_id DESC LIMIT 1
) as Mesaj,
( SELECT R.KayitZaman FROM mesajlarreply R
WHERE R.CID=M.m_id
ORDER BY R.mr_id DESC LIMIT 1
) as KayitZaman
FROM mesajlar M, kullanicilar K
WHERE
CASE
WHEN M.K1 = '1' THEN M.K2 = K.id
WHEN M.K2 = '1' THEN M.K1 = K.id
END
AND ( M.K1 = '1' OR M.K2 = '1' )
ORDER BY M.m_id DESC
LIMIT 20
【问题讨论】:
-
你能发布两个表的结构吗?或者至少请附加有关主键主键的信息 - 这两个表中哪些列是主键?
-
您的编辑使这看起来是一个新的/不同的查询。如果是这样,您应该能够针对新查询调整我的答案;如果您遇到困难,请发布一个新问题。
-
@Clockwork-Muse 我发布了一个新问题,但没有人帮助我。我怎样才能做到这一点? stackoverflow.com/questions/23901430/…
-
@traBolicEM - 因为您没有展示您面临的新问题。您似乎希望我们为您做所有事情(甚至是微小的编辑)。您应该能够针对您的新问题调整我现有的答案;如果您的问题中有错别字,我很乐意调整我的答案,但如果您更改表格或其他列,我们希望 you 能够自行处理更改。如果我的回答对 this 问题的表现不够好,请在此处发布更多详细信息(例如您拥有的索引、EXPLAIN 计划的结果),以获得更好/额外的帮助。
标签: mysql sql subquery query-optimization query-performance