[請益] 哪種寫法效率比較好?

看板PHP作者 (s861175)時間11年前 (2013/06/29 21:25), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
【table1】 no | type _________ 01 | a 02 | a 01 | b 03 | a 02 | b 01 | c (以下省略上萬筆) 【table2】 no | type _________ 02 | b 03 | a 01 | c (以下省略上千筆) join這兩張表時,下列哪種語法效能會比較好? (1.) SELECT a.no FROM table1 AS a INNER JOIN table2 AS b ON a.no = b.no WHERE a.type = a AND b.type = a (2.) SELECT a.no FROM table1 AS a INNER JOIN table2 AS b ON a.no = b.no AND a.type = b.type WHERE a.type = a (3.)效能一樣 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.211.42 ※ 編輯: s861175 來自: 118.163.71.162 (06/30 10:12)

06/30 11:18, , 1F
兩邊的no都重複的話 join出來會很多
06/30 11:18, 1F

06/30 11:19, , 2F
感覺似乎用union all+where就可以了
06/30 11:19, 2F
補充說明:因為要抓兩張表分別的欄位資訊,因為是範例所以省略了,不然應該是 SELECT a.no,a.info,b.info,(省略一堆欄位名) FROM 所以,希望是用join的方式 ※ 編輯: s861175 來自: 118.163.71.162 (06/30 13:47)

06/30 20:59, , 3F
說真的因為這只有範例SQL,沒辦法給予最正確的解答
06/30 20:59, 3F

06/30 21:00, , 4F
不過你可以嘗試 EXPLAIN SELECT 看一下效能 或許就有答案
06/30 21:00, 4F

07/01 09:38, , 5F
假設 兩邊no 都有index,答案會是3
07/01 09:38, 5F

07/01 09:41, , 6F
除了上述假設,你的sql也要正確,話說 a.type= a 是什麼
07/01 09:41, 6F

07/02 17:23, , 7F
如果是postgresql的話答案也是3, 都會先最佳化一次
07/02 17:23, 7F

07/04 19:36, , 8F
mysql 現在會用參數調整最佳化方式,先 explain 看看 ?
07/04 19:36, 8F
文章代碼(AID): #1Hpk1Xe1 (PHP)