2010-12-15 2 views
1

У меня есть question, для которого я предоставил a решение. Тем не менее, я не чувствую, что это так эффективно, как это может быть:Есть ли более эффективный способ найти обманщиков на сервере Sql

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(); 
} 

Я использовал Stopwatch смотреть на время, прошедшее остовного итерацию records до завершения SubmitChanges. Прошедшее, кажется, не имеют ни смысла:

10666 записей завершена в течение 20 секунд
15425 записей завершена в течение 12 секунд
289 записей завершена в течение 21 секунд

Очевидно, одно, что бы ускорить процесс это если я должен сбросить индексы. Это можно сделать программно? Кроме того, есть ли лучший способ, чем то, что я предоставил?

+2

честно, самое эффективное место, чтобы найти простофили находится в чреве зверя (в базе данных - хранимая процедура). я был бы удивлен, если бы некоторые требования к вашему пользовательскому интерфейсу/презентации были «отображать дубликаты». Я предполагаю, что это обслуживание? – RPM1984 2010-12-16 04:36:55

+0

Оба набора записей уже хранятся в базе данных или являются записью ImportCust только в памяти? – NotMe 2010-12-16 04:49:46

ответ

3

вы можете использовать SQL Постулаты:

-- TSQL (SQL Server 2005/2008): -- 

select CompanyID from tbl_CustomerInfo 
    group by CompanyID 
    having COUNT(*)>1 
2

версия LINQ из SQL Tefod в:

from ci in dc.tbl_CustomerInfo 
group ci by ci.CompanyID into g 
where g.Count() > 1 
select g.Key 
Смежные вопросы