zu finden Ich habe diese question für die ich eine Lösung zur Verfügung gestellt. Allerdings glaube ich nicht, dass so effizient ist, wie es sein könnte:Gibt es eine effizientere Methode, um Duple in Sql-Server
using (DataContext context = new DataContext(SqlConnection)
{
var custInfo = context.GetTable<tbl_CustomerInfo>();
string compID = ImportCust.Rows[0]["CompanyID"].ToString();
var imports = from cust in ImportCust.AsEnumerable()
select cust.Field<int>("CustomerID");
var dupes = from import in imports
join cust in custInfo
on import equals cust.CustomerID
where cust.CompanyID== pivnum
select cust;
var records = dupes.GetEnumerator();
while (records.MoveNext())
{ custInfo.DeleteOnSubmit(records.Current); }
context.SubmitChanges();
}
I Stopwatch
verwendet habe bei verstrichene Zeit von records
bis zur Fertigstellung von SubmitChanges
Spanning Iteration zu suchen. Die verstrichenen Zeiten scheinen keinen Reim oder Grund zu haben:
10666 in 20 Sekunden abgeschlossen Aufzeichnungen
15425 in 12 Sekunden abgeschlossen Aufzeichnungen
289 Datensätze in 21 Sekunden abgeschlossen
Offensichtlich eine Sache, die Dinge beschleunigen würde up ist, wenn ich Indizes fallen lassen würde. Kann das programmatisch gemacht werden? Gibt es außerdem eine bessere Methode als die, die ich zur Verfügung gestellt habe?
ehrlich, der effizienteste Platz Betrogenen zu finden, ist in dem Bauch des Tieres (in der Datenbank - gespeicherte Prozedur). Ich würde mich wundern, wenn eine Anforderung auf Ihrer UI/Präsentation wäre, "Duplikate anzuzeigen". Ich denke, das ist Wartung? – RPM1984
Sind beide Datensatzsätze bereits in der Datenbank gespeichert oder befinden sich die ImportCust-Datensätze nur im Speicher? – NotMe
@ RPM1984: Ja, nach einer Show & erzählen Sie mit meinem Manager er schreibt einen SP für diese Last. – IAbstract