[請益] 多資料表條件篩選的建立技巧

看板PHP作者 (我的生命因你而發光)時間10年前 (2014/03/23 08:49), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
像下面這財經網站,裡面表列許多條件可供篩選 ( 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

03/24 19:04, , 1F
看不出來這兩個範例有什麼差別?
03/24 19:04, 1F

03/25 05:31, , 2F
一個是根據勾選的條件再加入LEFT JOIN,另一個是把全部條
03/25 05:31, 2F

03/25 05:32, , 3F
件都預先LEFT JOIN起來,後續才跟對勾選的條件做where
03/25 05:32, 3F

03/25 05:32, , 4F
只是想說效能上面應該會有很大的影響,不曉得一般都是怎樣
03/25 05:32, 4F

03/25 05:33, , 5F
來製作這樣多條件的篩選方法才會達到快速有效率的查詢呢?
03/25 05:33, 5F

03/25 12:11, , 6F
阿就試啊 很慢就拆啊 EXPLAIN阿
03/25 12:11, 6F

03/25 12:13, , 7F
某表如果只有某些條件用到 那當然是必要時再join就好了
03/25 12:13, 7F
文章代碼(AID): #1JBY-Fp3 (PHP)