mysql - 如何使用嵌套 SELECT 优化此 SQL 查询?

标签 mysql sql database select

我有以下查询:

SELECT src_big, created, modified, owner, aid, caption 
FROM photo 
WHERE aid IN (SELECT aid, modified FROM album WHERE owner IN (SELECT uid2 FROM friend WHERE uid1=me() or uid2 = me())order by modified desc) 
ORDER BY created DESC 
LIMIT 30

这运行得相当慢,我确信是因为嵌套的 SELECT 等。我怎样才能让它执行得更快?应该如何重写才能更好的优化?

最佳答案

尝试使用联接而不是子查询,它更快:

SELECT photo.src_big, photo.created, photo.modified, photo.owner, photo.aid, 
photo.caption FROM photo 
inner join album on album.aid = photo.aid 
inner join  friend on album.owner = friend.uid2 
WHERE uid1=me() or uid2 = me()
order by modified desc,created DESC LIMIT 30

注意:表名需要放在最后

关于mysql - 如何使用嵌套 SELECT 优化此 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8636629/

相关文章:

mysql - REST API、OAuth2 和身份验证错误

mysql - 如何在HH :MM format in MySQL?中导入时间

java - 无法延迟加载 JPA 关系

mysql - wso2设置数据库mysql

android - SQLite 使用 ContentValues 和 BigInteger 数据类型?

mysql - 什么时候使用 libmysql-6.1.dll 与 libmysql.dll?

mysql - 使用字段数据的条件 JOIN

sql - 无法分配 id, "Column ' id'不能为空"

mysql - sql building的进出记录

mysql - 如何在所有分支中获得第 n 个最高分?