Re: [請益] 看似簡單 但不知怎麼寫較有效率?
建議從 database sql 指令來處理, 三千萬筆資料要 pass 給 PHP
應該會負擔很重.
處理步驟
* 設定 index
table1 設 index (start_1, end_1)
table2 設 index (start_2, end_2)
* 下 SQL 語法:
SELECT *
FROM table2
WHERE NOT EXISTS (
SELECT *
FROM table1
WHERE start_2 <= start_1 AND end_1 <= end_2
)
※ 引述《eco100 (Maktub)》之銘言:
: 我的問題是這樣的
: 我有兩個table如下
: table1: table2:
: no. start_1 end_1 name start_2 end_2
: 1 3 5 A 1 6
: 2 4 6 B 7 10
: 3 11 13 C 11 15
: 4 12 14
: 規則是 table1 的start跟end 會落在table2的其中一個start跟end之間
: 我要找出 table2中 完全沒有table1資料落進去的name
: 呃 有點繞口
: 我以這兩個table為例 table1中的no.1 start跟end分別為(3, 5)
: (3, 5)會落在 table2中的 A (1, 6)裡面 所以A就不是我要找的啦~
: 同理可得到 table1的data會落入到table2中的A跟C
: 所以只有"B"是我要的結果
: 依我目前初學者的作法 我是先找出A跟C
: 然後再用全部扣掉A、C 得到B這個答案
: 而我目前實際的問題是
: table1約有「3000萬」筆的資料 table2約有25000筆資料
: 在table2 大約會有 1000筆是不會包含table1中的任何資料的
: 若按照我的邏輯去寫 一定會跑很久
: 所以我想問 是否有比較直接的寫法 可以找出那大約1000筆的資料?
: 或者是有比較快速的寫法? 可以用哪些語法?
: 還請各位指點 感謝大家 ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.64.54.125
推
05/26 23:23, , 1F
05/26 23:23, 1F
推
05/27 09:25, , 2F
05/27 09:25, 2F
推
05/27 17:36, , 3F
05/27 17:36, 3F
→
05/27 17:36, , 4F
05/27 17:36, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章