[請益] MySQL SELECT 大量不規則條件

看板PHP作者 (NA)時間8年前 (2015/08/10 18:57), 8年前編輯推噓3(3017)
留言20則, 6人參與, 最新討論串1/1
假設 table 裡有 1000 萬筆資料,每筆資料都有 uniqid, uniqid 皆為不規則,例如: uniqid data -------- -------- abcdefgh data_1 acegbdfh data_2 adgbehcf data_3 aebfcgdh data_4 … afbgchde data_1000萬 現在手邊有 100 個 uniqid,需要從該 table 取出資料, 請問 SQL 該怎麼下最妥當呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.26.181 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1439204239.A.741.html

08/10 19:04, , 1F
(1)開temp table (2)加入所有uniqid (3)join
08/10 19:04, 1F

08/10 19:30, , 2F
請問除了MOON大的方法還有其他的方式嗎? 因為 db 帳
08/10 19:30, 2F

08/10 19:30, , 3F
號沒有 create 的權限… = =
08/10 19:30, 3F
※ 編輯: nakahusa (125.227.26.181), 08/10/2015 19:31:53

08/10 22:41, , 4F
組好要查的內容,where uniqid in (val_1,val_2,...)
08/10 22:41, 4F

08/11 00:15, , 5F
推 sextitanic 給的方法
08/11 00:15, 5F

08/11 10:25, , 6F
感謝大家,大概有個底囉
08/11 10:25, 6F

08/11 10:32, , 7F
in (...) 最直接 temp table據稱較快 但可能是個迷信
08/11 10:32, 7F

08/11 11:24, , 8F
1000萬筆又搭配in想必效率不佳 ~
08/11 11:24, 8F

08/11 11:28, , 9F
看做什麼用 如果batch就隨便他
08/11 11:28, 9F

08/11 13:33, , 10F
如果改 OR 會好點嗎 XDDD
08/11 13:33, 10F

08/11 13:33, , 11F
WHERE uniqid=val_1 OR uniqid=val_2 …
08/11 13:33, 11F

08/11 16:07, , 12F
根據這邊的實驗,不會 http://goo.gl/8KKjuV
08/11 16:07, 12F

08/11 16:08, , 13F
一說現在參數很多的IN在內部會自動轉用temp table處理
08/11 16:08, 13F

08/11 17:09, , 14F
(也許可以試拼一個stmt然後用explain看看)
08/11 17:09, 14F

08/11 17:40, , 15F
嘖嘖… OR 也輸太多 XDDD MOON大有心了! 感恩
08/11 17:40, 15F

08/12 10:18, , 16F
IN一直是巨大的迷惑啊 以前每次提到IN 公司的老SA就會
08/12 10:18, 16F

08/12 10:20, , 17F
露出像便秘的表情說不要寫IN那樣很慢 一直很想充康他
08/12 10:20, 17F

08/12 11:58, , 18F
IN 跟 OR 是差不多意思的, 效能都不好
08/12 11:58, 18F

08/12 14:48, , 19F
最好是寫一百萬個select會比較好
08/12 14:48, 19F

08/14 17:02, , 20F
In 會好一點,Or資源沒有重複利用的可能
08/14 17:02, 20F
文章代碼(AID): #1Lo8EFT1 (PHP)