作者s861175 (s861175)
看板PHP
標題[請益] 哪種寫法效率比較好?
時間Sat Jun 29 21:25:50 2013
【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)
1F:→ anest:兩邊的no都重複的話 join出來會很多 06/30 11:18
2F:→ anest:感覺似乎用union all+where就可以了 06/30 11:19
補充說明:因為要抓兩張表分別的欄位資訊,因為是範例所以省略了,不然應該是
SELECT a.no,a.info,b.info,(省略一堆欄位名) FROM
所以,希望是用join的方式
※ 編輯: s861175 來自: 118.163.71.162 (06/30 13:47)
3F:→ kosjason:說真的因為這只有範例SQL,沒辦法給予最正確的解答 06/30 20:59
4F:→ kosjason:不過你可以嘗試 EXPLAIN SELECT 看一下效能 或許就有答案 06/30 21:00
5F:推 pttnews:假設 兩邊no 都有index,答案會是3 07/01 09:38
6F:→ pttnews:除了上述假設,你的sql也要正確,話說 a.type= a 是什麼 07/01 09:41
7F:推 abola921:如果是postgresql的話答案也是3, 都會先最佳化一次 07/02 17:23
8F:推 clifflu:mysql 現在會用參數調整最佳化方式,先 explain 看看 ? 07/04 19:36