看板 Database 關於我們 聯絡資訊
各位大大好: 假設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個資料合併起來(這裡有點偏程式端了) 效能會比較快嗎? 在此先感謝各位!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.223.105 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1401263152.A.530.html
rockchangnew:善用索引,資料庫沒那麼差。 05/30 19:44
我的資料庫中有設索引呢,不過還是慢慢的...也有可能是Server不太給力啦
popcorny:基本上資料庫系統也像是你這麼做,先過濾再join 05/31 15:29
popcorny:你可以用explain先看看他怎麼做query得 05/31 15:29
okay!我等等就試看看!
bohei:yeah 可運用temp table 05/31 22:42
Temp table好像要進網頁後才執行,我的首頁也是因為Query很慢所以第一次會等很久... 所以才在找看看有沒有方法提高Query的效能 ※ 編輯: Prestense (220.133.223.105), 06/03/2014 10:37:50
iFEELing:temp table 也可以想成 資料異動不大的話 乾脆就批次算 06/05 01:21
iFEELing:重點是 為什麼會耗時跟耗資源? 資料庫是怎麼進行的? 06/05 01:28
iFEELing:想想看 . 執行計畫, join演算法,暫存空間, 資料集大小... 06/05 01:30
iFEELing:看看可能的瓶頸在什麼地方 06/05 01:30