我对两个表进行内连接查询
select D.*,F.* FROM dyn D INNER JOIN uf F ON (D.uid=F.fuid AND F.uid=1) ORDER BY D.id DESC
发现数据量比较大的时候,执行效率低,用explain分析,看到Extra一栏的信息有using temporary,using filesort,查了一些资料说是如果extra有using temporary或者using filesort都会有问题,去掉这个查询语句后面的ORDER BY D.id DESC(D表的id是自动增加的主键,希望能用该字段进行排序),执行就快了很多,而且extra也没有using temporary和usingfilesort,这是怎么回事?如果才能解决?非常感谢。 id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE F ref FUID,UID UserID 4 const 8 Using temporary; Using filesort
1 SIMPLE D ref UID UserID 4 pdclub.F.FUID 9
select D.*,F.* FROM dyn D INNER JOIN uf F ON (D.uid=F.fuid AND F.uid=1) ORDER BY D.id DESC
发现数据量比较大的时候,执行效率低,用explain分析,看到Extra一栏的信息有using temporary,using filesort,查了一些资料说是如果extra有using temporary或者using filesort都会有问题,去掉这个查询语句后面的ORDER BY D.id DESC(D表的id是自动增加的主键,希望能用该字段进行排序),执行就快了很多,而且extra也没有using temporary和usingfilesort,这是怎么回事?如果才能解决?非常感谢。 id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE F ref FUID,UID UserID 4 const 8 Using temporary; Using filesort
1 SIMPLE D ref UID UserID 4 pdclub.F.FUID 9
解决方案 »
- 如何快速查询如下结果?
- 数据库的学习流程,从初级到神级!!MySQL
- 不用查询分析器创建数据库
- mysql trigger 中文字段问题
- com.mysql.jdbc.CommunicationsException
- 查出上传时间最晚的 记录 并按用户分组
- 还是 mysql命令行中文乱码,为什么还 出现?求帮助 !?
- mysql的基本数据类型中有没有逻辑、货币、图像这三种类型呢?
- 在win环境中,如何使用ADO连接远端mysql而不用ODBC连接
- mysql update的时候如果在没有索引的列上更新,索引会影响到更新速度吗?
- 请问一个统计SQL语句?
- 记录数的总量似乎并不完全按where后面的条件来统计,怎么回事?请高手指点。————在线等!谢谢!!
ID
UID
Content
HappenTime
uf表
FID
UID
FUID
这个代表你用了ORDER BY 。所以这个EXTRA是很正常的,除非你不用ORDER BY 。
pdclub.F.FUID这个是索引,用到了。
还有一个CONST。这个代表常量。也是非常优化的。ORDER BY 本来就是很消耗资源的。
如果你经常ORDER BY 的话。建议增加你的SORT_BUFFER_SIZE的值。
mysql> show status like 'Sort_merge_passes';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Sort_merge_passes | 0 |
+-------------------+-------+
1 row in set (0.00 sec)