【发布时间】:2011-12-11 01:33:49
【问题描述】:
这个查询正在获取用户订阅上传的最新视频,它的运行速度非常慢,所以我重写了它以使用连接,但它没有任何区别,在修改它之后我发现删除 ORDER BY 会成功运行速度很快(但它违背了查询的目的)。
查询:
SELECT vid. *
FROM video AS vid
INNER JOIN subscriptions AS sub ON vid.uploader = sub.subscription_id
WHERE sub.subscriber_id = '1'
AND vid.privacy = 0 AND vid.blocked <> 1 AND vid.converted = 1
ORDER BY vid.id DESC
LIMIT 8
运行解释,它会在订阅表中显示“使用临时;使用文件排序”,而且速度很慢(0.0900 秒)。
如果没有 ORDER BY vid.id DESC,它不会显示“使用临时;使用文件排序”,因此速度很快(0.0004 秒),但我不明白其他表如何影响它。
所有字段均已编入索引(隐私屏蔽和转换字段对性能的影响不会超过 10%)。
我会粘贴完整的解释信息,但我似乎无法使其适合本网站的布局。
【问题讨论】:
-
你应该包含索引和执行计划,尝试使用
<pre>标签
标签: mysql performance join sql-order-by inner-join