Heim > Artikel > Backend-Entwicklung > Problem beim Abgleich von Datenbankfeldern
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.
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
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