現在有兩個表(mysql)
表1字段如下:省,市,手機號,姓名,其它字段
表2字段如下:省,市,手機號,其它字段
表1和表2的資料庫都較大,每日新增資料數百萬行。
現在對錶1和表2都進行了分錶。
需求是:根據兩表中的手機號碼來配對兩表的資料。
問題是:
1、匹配的好的數據如何存儲,是存儲到第三個表,或者在表1加個字段,保持表2匹配的行的id。
2、如何查詢未符合的記錄。
現在有兩個表(mysql)
表1字段如下:省,市,手機號,姓名,其它字段
表2字段如下:省,市,手機號,其它字段
表1和表2的資料庫都較大,每日新增資料數百萬行。
現在對表1和表2都進行了分錶。
需求是:根據兩表中的手機號碼來配對兩表的資料。
問題是:
1、匹配的好的數據如何存儲,是存儲到第三個表,或者在表1加個字段,保持表2匹配的行的id。
2、如何查詢未符合的記錄。
<code class="sql">create table zzz( id int not null, xx ..., primary key(id) ) as ( select id, xx from table where .. )</code>
http://dev.mysql.com/doc/refm...
未匹配的記錄, 使用一張表作為左表關聯另外一張表, 判斷右表是否有 null 即可
例如
<code class="sql">select * from tb1 left join tb2 on tb1.mobi=tb2.mobi where tb2.mobi is null</code>
這樣的結果就是 tb1 中的所有沒出現在 tb2 的記錄
但是這樣有另外一種情況tb2 中如果有某個記錄tb1 不存在的就無法查出tb1 的未匹配記錄.
其實要查看兩表是否全部匹配可以使用full join
來進行匹配, 但是從你的這個資料量來看, 建議不要使用full join , 就算用也不要查全部的.
關於 join 用法看這張圖
表的最佳化
1、手機號碼欄位建立索引
2、分錶建議按手機號碼前幾位來分錶。
關於儲存
建議表1表2分別加字段,儲存另一表中的行。下次更新處理的時候可以跳過欄位有值的部分處理。
未匹配的就是字段為空的。
另外
建議把更新直接放到記錄的時候,往表1加資料的時候查詢是否在表2中存在。
查詢的可以
select * from t1,t2 where t1.mobile = t2.mobile
查詢出來了就可以創建新的了