我有两个表,我需要从两个表中选择一些连接的数据
SELECT f.*
FROM file_data f
JOIN subscriptions s ON f.uid = s.elementid
WHERE s.uid = 119762 AND f.private=0
ORDER BY f.date DESC
现在,即使对于一小部分数据,查询也需要一秒钟以上的时间。
这是由于“订阅”上使用了“文件排序”和“临时”,由 ORDER BY f.date 引起(删除该条件会导致时间降至 0.01 秒以下)
谁能告诉我如何加快查询速度?
这是 EXPLAIN 的结果
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE s ref uid_elementid uid_elementid 4 const 171 Using index; Using temporary; Using filesort
1 SIMPLE f ref uid_uname uid_uname 5 s.elementid 22 Using where
索引何时有助于排序依据是很难预测的。它很少像“索引字段中的字段”那么简单order by
". 这个链接 http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html有具体细节。如果您认为您有正确的索引,而优化器只是不决定使用它们,请使用索引提示 http://dev.mysql.com/doc/refman/5.0/en/index-hints.html向数据库服务器建议索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)