我尝试优化我的查询,因为为了更多的理解,为了更多的理解而排序 我试图实现这个好的解决方案:Slow query when using ORDER BY
我的桌子里有70K,当我这样做时,我有这个神:#1248 - 每个派生的表必须有自己的别名
我的原始查询如下所示:
SELECT * FROM
( SELECT * FROM profile
LEFT JOIN profileg USING( id )
WHERE X NOT IN ( SELECT A FROM B ) AND ( S = 1 )
DESC LIMIT 0, 20
) ORDER BY M
你可以帮忙吗?!?
问候,
杰西卡
答案 0 :(得分:1)
第二个查询中的错误是您的子查询无效。这是你追求的吗?
SELECT *
FROM ( SELECT * FROM profile
LEFT JOIN profileg USING( id )
WHERE X NOT IN ( SELECT A FROM B ) AND S = 1
) as table1
ORDER BY M DESC
LIMIT 0, 20
虽然我没有看到子查询的重点。做
SELECT * FROM profile
LEFT JOIN profileg USING( id )
WHERE X NOT IN ( SELECT A FROM B ) AND S = 1
ORDER BY M DESC
LIMIT 0, 20
似乎基本上是相同的,除了你执行少一个查询。