[讨论] 资料表Join的效能差异

楼主: Prestense (dreamer)   2014-05-28 15:45:50
各位大大好:
假设2个资料表A和资料表B的资料量都很大(就假设都100万笔好了)
那在做Join的时候一定会非常耗时和耗资源
一般我们在下查询时普遍都会这样写
SELECT A.name B.salary FROM A LEFT JOIN B on A.id = B.id WHERE A.age >='20';
那如果先将A资料表查询完成
SELECT name, id FROM A WHERE age >= '20';
再以程式循环方式查询B资料表(假设A资料表查询完有20笔,那B资料表就要查询20次)
SELECT salary FROM B WHERE id='A.id'; //A.id是上面A资料表查询出来的字段资料
最后再把2个资料合并起来(这里有点偏程式端了)
效能会比较快吗?
在此先感谢各位!!!
作者: rockchangnew (rock)   2014-05-30 19:44:00
善用索引,数据库没那么差。
作者: popcorny (毕业了..@@")   2014-05-31 15:29:00
基本上数据库系统也像是你这么做,先过滤再join你可以用explain先看看他怎么做query得
作者: bohei (run and fall)   2014-05-31 22:42:00
yeah 可运用temp table
作者: iFEELing (ing)   2014-06-05 01:21:00
temp table 也可以想成 资料异动不大的话 干脆就批次算重点是 为什么会耗时跟耗资源? 数据库是怎么进行的?想想看 . 执行计画, join算法,暂存空间, 资料集大小...看看可能的瓶颈在什么地方

Links booklink

Contact Us: admin [ a t ] ucptt.com