在这两个表查询中表现更好?

Ton*_*bet 1 mysql sql

我正在尝试从sessionid所遵循的用户检索博客的ID:

SELECT * FROM articles
 WHERE id_usuario IN (SELECT toid FROM follows WHERE fromid = '$id')
Run Code Online (Sandbox Code Playgroud)

这给了我预期的结果,但即使行数很少,性能也很糟糕.

加入会更好吗?

And*_*rew 5

您可以通过重写来快速解决此问题:

SELECT * FROM articles WHERE id_usuario IN (SELECT toid FROM follows WHERE fromid = '$id' AND id_usuario = toid)
Run Code Online (Sandbox Code Playgroud)

通过您的查询,MySQL将尝试首先实现外部查询(选择所有文章),然后根据内部查询进行过滤,这是不高效的,不幸的是现在还不够聪明,因为它应该将该子查询转换为连接.

您可以通过在您要过滤的条件下引用内部表中的外部表来为优化程序提供所需的提示,如上所述.