看板 PHP 關於我們 聯絡資訊
像下面這財經網站,裡面表列許多條件可供篩選 ( http://www.wantgoo.com/hottipsearch.aspx ) 我想問的是這些條件分散在其他資料表當中,是根據勾選的項目來做集合動作嗎?(ex1) 還是先把全部資料聯集載出,再根據不同條件去做where篩選呢?例如ex2 (((ex1))) 單純A條件 SELECT A.data1 FROM (SELECT data1 FROM A1) A where A條件 除了A條件之外,再勾選B條件 SELECT A.data1 FROM (SELECT data1 FROM A1) A LEFT JOIN (SELECT FROM B1) B where A條件 and B條件 ((( ex2 ))) 但這樣效能是否會相對不好? SELECT A.data1 FROM (SELECT data1 FROM A1) A LEFT JOIN (SELECT FROM B1) B LEFT JOIN (SELECT FROM C1) C ..........where A條件 and B條件..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.174.131
MOONRAKER:看不出來這兩個範例有什麼差別? 03/24 19:04
jami520:一個是根據勾選的條件再加入LEFT JOIN,另一個是把全部條 03/25 05:31
jami520:件都預先LEFT JOIN起來,後續才跟對勾選的條件做where 03/25 05:32
jami520:只是想說效能上面應該會有很大的影響,不曉得一般都是怎樣 03/25 05:32
jami520:來製作這樣多條件的篩選方法才會達到快速有效率的查詢呢? 03/25 05:33
MOONRAKER:阿就試啊 很慢就拆啊 EXPLAIN阿 03/25 12:11
MOONRAKER:某表如果只有某些條件用到 那當然是必要時再join就好了 03/25 12:13