[討論] 資料表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