Heim  >  Artikel  >  Backend-Entwicklung  >  Problem beim Abgleich von Datenbankfeldern

Problem beim Abgleich von Datenbankfeldern

WBOY
WBOYOriginal
2016-12-01 01:27:421582Durchsuche

Jetzt gibt es zwei Tabellen (MySQL)
Die Felder von Tabelle 1 lauten wie folgt: Provinz, Stadt, Mobiltelefonnummer, Name, andere Felder
Die Felder von Tabelle 2 lauten wie folgt: Provinz, Stadt , Mobiltelefonnummer, andere Felder

Die Datenbanken von Tabelle 1 und Tabelle 2 sind beide groß, und jeden Tag werden Millionen Zeilen mit neuen Daten hinzugefügt.
Jetzt sind sowohl Tabelle 1 als auch Tabelle 2 in Tabellen unterteilt.
Die Anforderung lautet: Vergleichen Sie die Daten in den beiden Tabellen anhand der Mobiltelefonnummern in den beiden Tabellen.
Die Frage lautet:
1. Wie werden die übereinstimmenden Daten in der dritten Tabelle gespeichert oder wird ein Feld zu Tabelle 1 hinzugefügt, um die ID der übereinstimmenden Zeile in Tabelle 2 beizubehalten?
2. So fragen Sie nicht übereinstimmende Datensätze ab.

Antwortinhalt:

Jetzt gibt es zwei Tabellen (MySQL)
Die Felder von Tabelle 1 lauten wie folgt: Provinz, Stadt, Mobiltelefonnummer, Name, andere Felder
Die Felder von Tabelle 2 lauten wie folgt: Provinz, Stadt , Mobiltelefonnummer, andere Felder

Die Datenbanken von Tabelle 1 und Tabelle 2 sind beide groß, und jeden Tag werden Millionen Zeilen mit neuen Daten hinzugefügt.
Jetzt sind sowohl Tabelle 1 als auch Tabelle 2 in Tabellen unterteilt.
Die Anforderung lautet: Vergleichen Sie die Daten in den beiden Tabellen anhand der Mobiltelefonnummern in den beiden Tabellen.
Die Frage lautet:
1. Wie werden die übereinstimmenden Daten in der dritten Tabelle gespeichert oder wird ein Feld zu Tabelle 1 hinzugefügt, um die ID der übereinstimmenden Zeile in Tabelle 2 beizubehalten?
2. So fragen Sie nicht übereinstimmende Datensätze ab.

<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...

Verwenden Sie für nicht übereinstimmende Datensätze eine Tabelle als linke Tabelle, um sie mit einer anderen Tabelle zu verknüpfen, und bestimmen Sie, ob in der rechten Tabelle Null vorhanden ist
Zum Beispiel

<code class="sql">select * from tb1
left join tb2 on tb1.mobi=tb2.mobi
where tb2.mobi is null</code>

Das Ergebnis sind alle Datensätze in TB1, die nicht in TB2 erscheinen

Aber es gibt eine andere Situation: Wenn es in TB2 einen Datensatz gibt, der in TB1 nicht vorhanden ist, kann der nicht übereinstimmende Datensatz von TB1 nicht gefunden werden.
Um zu überprüfen, ob alle beiden Tabellen übereinstimmen, können Sie ihn verwenden full join um abzugleichen, aber angesichts der Datenmenge, die Sie haben, wird empfohlen, keinen vollständigen Join zu verwenden, und selbst wenn Sie ihn verwenden, überprüfen Sie nicht alle.

Siehe dieses Bild für die Verwendung von Join

Problem beim Abgleich von Datenbankfeldern

Tabellenoptimierung
1. Index auf dem Handynummernfeld

2. Es wird empfohlen, die Tabellen nach den ersten Ziffern der Mobiltelefonnummer aufzuteilen.

Über die Lagerung

Es wird empfohlen, Felder zu Tabelle 1 und Tabelle 2 hinzuzufügen, um Zeilen in einer anderen Tabelle zu speichern. Sie können die Verarbeitung von Feldern mit Werten beim nächsten Aktualisierungsvorgang überspringen.

Nicht übereinstimmende Felder sind leer.

Auch

Es wird empfohlen, die Aktualisierung direkt in den Datensatz einzufügen und zu prüfen, ob sie in Tabelle 2 vorhanden ist, wenn Sie Daten zu Tabelle 1 hinzufügen.

Sie können es abfragen, indem Sie
* aus t1,t2 auswählen, wobei t1.mobile = t2.mobile
Nach der Abfrage können Sie ein neues erstellen

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn