2016-12-20 2 views
0

Ich habe zwei Tabellen (mit der gleichen Struktur). Eines mit 80 Millionen und andere mit 60 Millionen Datensätzen. Ich möchte Datensätze in 80m Tabelle löschen, die in 60m Tabelle übereinstimmen. ich eine SQL-Abfrage verwenden, wie unten:Bessere SQL-Abfrage In SQL Server für die beste Leistung

DELETE FROM tbl_80M 
FROM tbl_80M INNER JOIN 
tbl_60M ON tbl_80M.MobileNumber = tbl_60M.MobileNumber 

In zwei Tabellen, haben wir Index auf Handynummer Felder aus. Ich laufe über Abfrage und es dauert eine lange Zeit. Gibt es eine bessere Möglichkeit, Ergebnisse in kürzerer Zeit zu erreichen?

Hinweis: tbl_80M enthält alle Datensätze in tbl_60M. Ich möchte alle Datensätze finden und löschen, die in tbl_80M und tbl_60M üblich sind.

+0

Wie viele Zeilen stimmen zwischen den beiden Tabellen überein? Das heißt, welcher Wert wird von der Abfrage zurückgegeben 'SELECT COUNT (*) FROM tbl_80m INNERER JOIN tbl_60m ON tbl_80M.MobileNumber = tbl_60M.MobileNumber'. –

+0

Tanks, 60 Milions, My Porpuse ist gemeinsame Datensätze löschen In tbl_80M – student

+1

Sie sollten prüfen, wann Großbuchstaben verwendet werden. –

Antwort

0

Haben Sie versucht, eine Abfrage zu schreiben, um diese N Millionen Datensätze in eine neue Tabelle einzufügen und dann die alten Tabellen zu löschen.

Dann können Sie endlich neue Tabelle in tbl_80M umbenennen.

SELECT 
    * INTO tbl_NM 
FROM tbl_80m a, 
    tbl_60m b 
WHERE tbl_80M.MobileNumber = tbl_60M.MobileNumber 
+0

tbl_80M hat alle Datensätze, die in tbl_60M sind. Ich möchte alle Datensätze finden und löschen, die in tbl_80M üblich sind. – student

+0

@student, Versuchen Sie, die Abfrage selbst zu schreiben und fügen Sie sie zur Frage hinzu. Es wird so etwas wie unten sein. Haftungsausschluss: - Ich habe das nicht getestet. SELECT * INTO tbl_NM VON tbl_80m a, WHERE tbl_80M.MobileNumber NICHT IN (wählen Mobilenumber von tbl_60M) –

+0

Danke, es gute Idee ist, und ich werde es jetzt testen. – student

Verwandte Themen