哪一个运行速度更快: 有多个连接的查询或使用嵌套选择查询?哪一个运行在MySQL在MySQL
回答
鉴于表上的正确的索引,我会去说JOINS
将是更好的性能,但它始终是测试各种查询性能最佳实践。
在这种情况下无法回答。你应该分析他们每个人EXPLAIN
这是查询:(它返回60,000条记录) SELECT @row:= @row + 1 AS rowno,t2.no,t3.fname, t3.lame,t2.syear, t2.fcode,t2。 flcode,t2.pid 来自T2 JOIN T3 ON t3.pid = t2.pid JOIN T4 USING(STID) JOIN T5 ON t4.ecode = t5.ecode WHERE t5.cat = '1' ORDER BY T3 .lname,t3.lname 所有表都有索引。 我还没有测试嵌套选择。 – 2010-04-12 04:37:03
请发布一个新的问题......我想它需要一段时间来做一个60k记录文件,它将取决于行大小和许多其他因素,请发布一个新的问题与查询,所有表格的模式和解释计划。 – MarkR 2010-04-13 22:35:57
在大多数情况下,JOINS更高效。这假设你加入索引的列。 HOwever,上面的答案是正确的。您需要使用EXPLAIN评估您的特定查询才能看到。
- 1. 在mysql中运行多个mysql实例
- 2. 如何找出哪个脚本正在运行MySQL查询?
- 3. mySQL查询未在MySQL Workbench中运行
- 4. 在mysql查询中运行mysql查询
- 5. 哪个查询将在MySQL
- 6. 在kubernetes中运行多个mysql pod
- 7. 在MYSQL上运行更新
- 8. 根据另一个mysql查询的结果运行Mysql查询?
- 9. MySQL + VB.NET - 在一个循环中逐个选择所有MySQL行
- 10. 在一个MySQL表
- 11. MySQL在一个表
- 12. 在一个MySQL表
- 13. 在一个MySQL表
- 14. 在另一个MySQL表中对来自一个MySQL表的行进行分组
- 15. 哪里和哪里不在同一个查询mysql
- 16. 在哪里clausule在MySQL
- 17. MySQL请求在哪里...在
- 18. 在InnoDB/MySQL中执行哪些搜索
- 19. Mysql加入 - 如何知道从哪个表检索哪一行...?
- 20. 在MYSQL中运行并行查询
- 21. 如何在php中运行一个mysql查询servel次数
- 22. 仅在一个运行模式下的mysql上设置
- 23. 在JDBC中一次运行4个mysql查询
- 24. mysql在一行上获取多个id
- 25. MySQL哪里存在,mySQL如何链接行?
- 26. 更新一行在MySQL
- 27. 最近一行在MySQL
- 28. 在MySQL中计数一行?
- 29. 删除一行在MySQL
- 30. 确定结果是哪一行数 - mysql
这取决于查询。的 – 2010-04-12 03:45:53
可能重复http://stackoverflow.com/questions/2131368/mysql-embedded-selects-vs-joins – meagar 2010-04-12 03:46:35
@meagar:在您提供它是相当明确的相关子查询和相同的加入,因此有可能作出决定的链接。但在这里没有额外的细节来说明具体的东西或指向任何特定的线程,我想。 – zerkms 2010-04-12 03:50:41