資料庫欄位匹配的問題

來源:互聯網
上載者:User
現在有兩個表(mysql)
表1欄位如下:省,市,手機號,姓名,其它欄位
表2欄位如下:省,市,手機號,其它欄位

表1和表2的資料庫都較大,日新增資料幾百萬行。
現在對錶1和表2都進行了分表。
需求是:根據兩表中的手機號匹配兩表的資料。
問題是:
1、匹配的好的資料如何儲存,是儲存到第三個表,或者在表1加個欄位,保持表2匹配的行的id。
2、如何查詢未匹配的記錄。

回複內容:

現在有兩個表(mysql)
表1欄位如下:省,市,手機號,姓名,其它欄位
表2欄位如下:省,市,手機號,其它欄位

表1和表2的資料庫都較大,日新增資料幾百萬行。
現在對錶1和表2都進行了分表。
需求是:根據兩表中的手機號匹配兩表的資料。
問題是:
1、匹配的好的資料如何儲存,是儲存到第三個表,或者在表1加個欄位,保持表2匹配的行的id。
2、如何查詢未匹配的記錄。

create table zzz(id int not null,xx ...,primary key(id)) as (select id, xx from table where ..)

http://dev.mysql.com/doc/refm...

未匹配的記錄, 使用一張表作為左表關聯另外一張表, 判斷右表是否有 null 即可
例如

select * from tb1left join tb2 on tb1.mobi=tb2.mobiwhere tb2.mobi is null

這樣的結果就是 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
查詢出來了就可以建立新的了

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.