Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какой из поисков быстрее? 
:(
    Опции темы
Darkmaster
Дата 25.10.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2005

Репутация: нет
Всего: нет



Возник такой вопросик, в локальной БД после отправи письма нужно проверить является ли email на который отправлено письмо email'ом клиента в базе. Так вот возник вопрос что лучше для этого использовать? Пока есть два варианта: в первом все адреса на которые только что было отправлено пиьсмо перебираются циклом for в котором есть  foreach проходящий по всей базе и сравнвающий нынешний  email с теми что есть в базе:

Код

  for (int i = 0; i < msg.To.Count; i++)
                {
                    foreach (DataRow dr in f1.dataTable1.Rows)
                    {
                        if (dr["email"].ToString() == msg.To[i].Address) // msg - это MailMessage
                        {
                            DataRow mailrow = f1.dataTable2.NewRow();
                            mailrow["linkkey"] = dr["key"];
                            ....
                         }

                    }
                 }


Второй способ воспользоваться datatabl1.Select(запрос), так вот хотелоь бы узнать что быстрее, имеет ли смысл вообще это искать а также как можно замерить. Визуально особой разницы в скорости нет, но тем не менее...
--------------------
GeekTV - интернет-телевидение для гиков
PM MAIL   Вверх
Wanderer2019
Дата 25.10.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



Напиши хранимую процедуру, в которую передавался бы этот адресс и она возвращала бы да или нет. 

PM ICQ MSN   Вверх
Zapozidon
Дата 25.10.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.8.2007

Репутация: нет
Всего: 1



Проверить - поставить замер времени перед и после выполнения, но результат может быть неоднозначный. 
Разница скорее всего будет маленькая при небольших данных. Глобально же посоветовал бы следущее: в строчке кода 
Код

if (dr["email"].ToString() == msg.To[i].Address) // msg - это MailMessage 

осуществляются операции ToString(), соответственно, вылезут новые объекты, которые будет хавать сборщик мусора. А как уже устроен DataTable.Select - вопрос, но наверняка такого не будет. В случае если у Вас в dataTable1.Rows хранится миллион объектов, тогда будет лишних миллион строчек. Во втором случае скорее всего такого не будет (все опять же упирается в реализацию метода Select, но я верю в Microsoft, так пролабанить они не могут smile), так что я голосую за второй вариант.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.