Ich versuche, die Datensätze aus der Datenbank abzurufen.Abrufen von Datensätzen aus der Datenbank in der Baumstruktur
Meine Datenbanktabellen:
- Abteilungen
- EmployeeDepartments (Intermediate Tisch Abteilung ---> Mitarbeiter)
- Mitarbeiter
- EmployeeLocations (Mittel für Mitarbeiter Tabelle - -> Standorte)
- Standorte
Die obigen Tabellen enthalten große Datensätze.
würden Meine Daten erzeugt auf der unten gezeigten Struktur basieren:
Was ich versucht:
Mein erster Ansatz:
using(SQLConnection con = new SQLConnection())
{
//Get all the departments
List<Department> departmentList = sp.GetAllDeparments();
foreach(Deparment deparment in departmentList){
//Get all employees
List<Employee> employeeList= sp.GetEmployeesByDepartment(departmentId);
foreach(Employee employee in employeeList){
//Get all locations
List<Location> locationList= sp.GetLocationsByEmployee(employeeId);
foreach(Location location in locationList){
//Code for location generation for PDF.
}
}
}
}
Der obige Code braucht ungefähr 6 Minuten, wenn ich die Datenbank in foreach Schleifen anschlage.
Mein zweiter Ansatz:
//Get all the departments
List<Department> departmentList = sp.GetAllDeparments();
//Get all employees
List<Employee> employeeList= sp.GetAllEmployees();
//Get all locations
List<Location> locationList= sp.GetAllLocations();
//Get EmployeeLocations List<EmployeeLocations> emplocationList=
sp.GetAllEmployeeLocations();
//Get EmployeeDepartments List<EmployeeDepartments> empDepList=
sp.GetAllEmployeeDepartments();
foreach(Deparment deparment in departmentList){
foreach(Employee employee in employeeList){
foreach(Location location in locationList){
}
}
}
ich alle Datensätze aus allen oben genannten Tabellen bin Abrufen und in foreach-Code mit LINQ zu manipulieren. So reduziert sich die Zeit von 6 Minuten auf 4 Minuten.
Meine Frage: Was wäre der effiziente Weg, um die Daten in kürzester Zeit wie möglich zu holen. in dieser Art von Szenario?
Ich brauche die Daten im obigen Bild manipuliert.
Ihre Frage ist nicht über iText oder über PDF. –
Ich würde sagen, der zweite Ansatz, aber in Kombination mit geeigneten schnellen Nachschlagen Datenstrukturen für die Suche nach Abteilungs Mitarbeiter und Mitarbeiter Standorten. Wie lange dauert es nur den Datenabrufteil (vor 'foreach')? –
Obwohl ich derzeit den zweiten Ansatz verwende, ist das Abrufen der Daten auf einmal und das Speichern im Speicher kein Problem. Aber während ich foreach mache, benutze ich LambdaExpression. Das braucht Zeit. – Vikash