mysql join 循环_关于mysql联表的内嵌循环操作nested loop join中on和where执行顺序问题...
mysql的理論依據(jù)沒找到,個人理解是先執(zhí)行where的過濾條件,先關(guān)聯(lián)再過濾明顯做的是無用功。
oracle中倒是能在執(zhí)行計劃中看到,先執(zhí)行的是過濾條件(下面代碼中最后一行)。
explain plan for SELECT * FROM tmp_t2 t2 LEFT JOIN tmp_t1 t1 ON t2.id = t1.id AND t1.good_id = 'A'
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 3 | 147 | 6 (0)| 00:00:01 |
|* 1 | HASH JOIN | | 3 | 147 | 6 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL| TMP_T2 | 3 | 60 | 3 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL| TMP_T1 | 3 | 87 | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T2"."ID"="T1"."ID")
3 - filter("T1"."GOOD_ID"='A')
總結(jié)
以上是生活随笔為你收集整理的mysql join 循环_关于mysql联表的内嵌循环操作nested loop join中on和where执行顺序问题...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven ssm框架 mysql_SS
- 下一篇: html排序图标,css实现排序升降图标