Re: [SQL ] JOIN TABLE時WHERE的用法會影響效能嗎?
推
06/23 10:27, 
06/23 10:27
→
06/23 10:28, 
06/23 10:28
→
06/23 10:29, 
06/23 10:29
→
06/23 10:29, 
06/23 10:29
→
06/23 10:30, 
06/23 10:30
→
06/23 10:30, 
06/23 10:30
→
06/23 10:30, 
06/23 10:30
→
06/23 10:31, 
06/23 10:31
→
06/23 10:31, 
06/23 10:31
→
06/23 10:33, 
06/23 10:33
→
06/23 10:39, 
06/23 10:39
推
06/23 13:50, 
06/23 13:50
    感謝streetbad版友的提醒
  目前的寫法大致是如此,
  A資料庫有33萬比資料,B大約有10萬比。
  兩個資料都有f1,f2這些欄位沒有建索引,經由key欄位關聯。
  要搜尋A,B中f1或f2符合val值的資料
  而且只顯示B最新的一筆
  目前的寫法是如此,大概兩秒左右就能跑出資料了
  不過上頭似乎還是覺得有點慢 XD
  我用分析工具,有三個時間會比較慢
  send data 0.29 sec
  send data 0.29 sec 猜測是要UNION兩個資料的sql
  send data 0.8  sec 然後這把匯集的資料再SELECT這一段
  這種情形應該常見不是很罕見,
  猜想應該還會有更好的方法,只是一時還想不太出來啊。
  SELECT W.* FROM (
    SELECT W.*,O.* FROM W
      LEFT JOIN (
        SELECT Key,f1,f2,f3 FROM (
          SELECT Key,f1,f2,f3 FROM O
          WHERE O.Key <> '' AND  (O.f1='val' OR O.f2='val')
          ) as O  
        Order by O.f3 desc limit 1
        ) as O 
      ON W.key = O.key
    WHERE W.key <> '' AND (W.f1='val' OR W.f2='val')
    UNION
    SELECT W.*,O.* FROM W
      LEFT JOIN (
        SELECT Key,f1,f2,f3 FROM (
          SELECT key,f1,f2,f3 FROM O
          WHERE O.key <> '' AND  (O.f1='val' OR O.f2='val')
          ) as O  
        Order by O.f3 desc limit 1
      ) as O 
      ON W.key = O.key
    WHERE W.key <> '' AND (O.f1='val' OR O.f2='val')
 ) as W
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.152.9
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1466686672.A.A6F.html
推
06/24 00:10, , 1F
06/24 00:10, 1F
→
06/24 00:10, , 2F
06/24 00:10, 2F
推
06/24 00:13, , 3F
06/24 00:13, 3F
→
06/24 00:13, , 4F
06/24 00:13, 4F
→
06/24 00:13, , 5F
06/24 00:13, 5F
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章