首頁  >  文章  >  後端開發  >  資料庫欄位匹配的問題

資料庫欄位匹配的問題

WBOY
WBOY原創
2016-12-01 01:27:421577瀏覽

現在有兩個表(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
查詢出來了就可以創建新的了

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn