Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe einer gespeicherten Prozedur Daten effizient in übergeordnete und untergeordnete Tabellen in einer komplexen Datenstruktur einfügen und so eine ordnungsgemäße Datenzuordnung und optimale Leistung sicherstellen?

Wie kann ich mithilfe einer gespeicherten Prozedur Daten effizient in übergeordnete und untergeordnete Tabellen in einer komplexen Datenstruktur einfügen und so eine ordnungsgemäße Datenzuordnung und optimale Leistung sicherstellen?

DDD
Freigeben: 2025-01-14 19:12:44
Original
496 Leute haben es durchsucht

Eine gespeicherte Prozedur zum effizienten Einfügen von Eltern-Kind-Tabellendaten in komplexe Datenstrukturen

Frage:

Wie können in einer komplexen Datenbankstruktur gespeicherte Prozeduren verwendet werden, um Daten effizient in Eltern-Kind-Tabellen einzufügen und gleichzeitig eine korrekte Datenzuordnung sicherzustellen und die Leistung zu optimieren?

Lösung:

Um Daten effizient in Eltern-Kind-Tabellen einzufügen, befolgen Sie diese Schritte:

  1. Erstellen Sie eine temporäre ID-Spalte: Fügen Sie eine EmployeeId-Spalte in der benutzerdefinierten Tabelle (UDT) hinzu, um die temporäre ID jedes Mitarbeiters zu speichern.

  2. UDT mit temporärer ID füllen: Daten in UDT einfügen, einschließlich temporärer ID.

  3. Mitarbeiter-ID-Zuordnungstabelle erstellen: Deklarieren Sie eine Tabellenvariable (@EmployeeidMap), um den aus der Mitarbeitertabelle eingefügten Wert der temporären Mitarbeiter-ID im UDT zuzuordnen.

  4. Verwenden Sie die MERGE-Anweisung, um Daten in die Mitarbeitertabelle einzufügen: Verwenden Sie die MERGE-Anweisung, um Daten in die @MainEmployee-Tabelle einzufügen und die Quelldaten-Mitarbeiter-ID und die eingefügte Mitarbeiter-ID in die Zuordnung einzufügen Tisch.

  5. Einfügen in die Tabelle „ParentEmployeeDepartment“: Verknüpfen Sie den UDT mit der Zuordnungstabelle, rufen Sie die tatsächliche Mitarbeiter-ID ab und fügen Sie die Daten in die Tabelle @ParentEmployeeDepartment ein.

  6. wird der ParentEmployeeDepartmentID zugeordnet: Ordnen Sie mithilfe der Daten in @ParentEmployeeDepartment den tatsächlichen Wert in ParentEmployeeDepartmentID den von der gespeicherten Prozedur gesendeten Daten zu.

  7. In Untertabelle einfügen: Verwenden Sie Parent und EmployeeID aus der Tabelle DepartmentType, um zu bestimmen, in welche Untertabelle Sie Daten einfügen möchten.

Code:

<code class="language-sql">-- 创建EmployeeID映射表
DECLARE @EmployeeidMap TABLE (temp_id int, id int);

-- 使用MERGE语句插入员工表
MERGE INTO @MainEmployee USING @tEmployeeData AS sourceData ON 1 = 0
WHEN NOT MATCHED THEN
    INSERT (FirstName, LastName)
    VALUES (sourceData.FirstName, sourceData.LastName)
    OUTPUT sourceData.EmployeeId, inserted.EmployeeID INTO @EmployeeidMap;

-- 插入ParentEmployeeDepartment表
INSERT INTO @ParentEmployeeDepartment (EmployeeID, DepartmentType)
SELECT Id, DepartmentType
FROM @tEmployeeData
INNER JOIN @EmployeeidMap ON EmployeeID = temp_id;

-- 映射到ParentEmployeeDepartmentID
SELECT FirstName,
     LastName,
     SentData.DepartmentType AS [Dept. Type],
     DepartmentBuilding AS Building,
     DepartmentEmployeeLevel AS [Emp. Level],
     DepartmentTypeAMetadata AS [A Meta],
     DepartmentTypeBMetadata AS [B Meta],
     SentData.EmployeeId AS TempId, EmpMap.id AS [Emp. Id], DeptMap.ParentEmployeeDepartmentID AS [Dept. Id]
FROM @tEmployeeData SentData
INNER JOIN @EmployeeidMap EmpMap ON SentData.EmployeeId = temp_id
INNER JOIN @ParentEmployeeDepartment DeptMap ON EmpMap.id = DeptMap.EmployeeID;</code>
Nach dem Login kopieren

Ausgabe:

FirstName LastName Dept. Type Building Emp. Level A Meta B Meta TempId Emp. Id Dept. Id
Dave_FN Dave_LN B OpenC XII NULL Lab 8 1 1
Joe_FN Joe_LN A 101 IV Tech/IT NULL 7 2 2
Mike_FN Mike_LN B OpenH XII NULL Med 6 3 3
Tom_FN Tom_LN A 101 IV Tech/IT NULL 5 4 4

Hinweis:

Diese Lösung verwendet Zuordnungstabellen, um verschiedene Daten zwischen Tabellen effizient abzugleichen. Es vermeidet zeilenweise Vorgänge und optimiert die Leistung, sodass es für große Datenmengen geeignet ist.

How can I efficiently insert data into parent and child tables in a complex data structure using a stored procedure, ensuring proper data mapping and optimal performance?

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer gespeicherten Prozedur Daten effizient in übergeordnete und untergeordnete Tabellen in einer komplexen Datenstruktur einfügen und so eine ordnungsgemäße Datenzuordnung und optimale Leistung sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage