-2

我尝试优化我的查询,因为 order by 会引起麻烦,为了更好地理解,我尝试实现这个好的解决方案:使用 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

你能帮忙吗?!?问候,杰西卡

4

1 回答 1

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

似乎本质上是一回事,只是您执行的查询少了一个。

于 2013-06-28T16:51:12.680 回答