Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Что быстрее? / 9 сообщений из 9, страница 1 из 1
02.09.2006, 21:33
    #33960411
Махмуд
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
Привет.

Есть два куска кода, делают по-разному одно и то же. Какой из них будет работать быстрее и/или меньше нагрузит сервак?

(1)
SqlCommand command = new SqlCommand("select * from Users where UserID = " + UserID, new SqlConnection(SqlExec.GetConnectionString()));
command.Connection.Open();
SqlDataReader reader = command.ExecuteReader();
reader.Read();
if (reader.HasRows)
{
blablabla
}

(2)
UsersTableAdapters.SingleUserTableAdapter adapter = new UsersTableAdapters.SingleUserTableAdapter();
DataTable table = new DataTable();
table = adapter.GetUserDetails(UserID);
if (table.Rows.Count > 0)
{
blablabla
}--
Век живи - век учись, дураком помрешь
...
Рейтинг: 0 / 0
02.09.2006, 21:41
    #33960413
ЧеГевара
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
imho, first sample.
...
Рейтинг: 0 / 0
02.09.2006, 23:06
    #33960440
daner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
А по-моему одно и тоже. Они в конце одну и туже команду используют, только таблица сама эту команду генерирует (ну на это, какое то время, конечно, уйдет, но это время сервера {ASP} а не сервера {SQL}). Кроме того, о производительности в этих случаях спорит без осмысленно. Лучше оптимизировать участки внутри циклов если комплексность алгоритма не получается уменьшит.
...
Рейтинг: 0 / 0
02.09.2006, 23:18
    #33960443
alig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
Считается что запрос с параметрами работает быстрее чем динамический SQL. Поэтому для SQL сервера быстрее второй вариант. Но в нем данные копируются в DataTable, что нагрузит клиента. Самое лучшее переписать первый вариант чтобы он использовал параметры.
...
Рейтинг: 0 / 0
03.09.2006, 00:12
    #33960457
vbnet2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
Дык, эти два фрагмента кода совершенно разные вещи делают.
Если просто одиночное значение, в DataTable вообще никакого смысла нет вообще.
А если ты биндится к GridView дальше собрался, то в одиночных командах смысла нет никакого, без DataTable не обойдешься.
DataTable - это память.
А параметр UserID если вытащить в первом фрагменте наружу, то для SQL - это совершенно идентичные команды и сравнивать их по производителльности на уровне SQL бессмысленно.

Или ты очень хитрый и хочешь чтоб мы сравнили прирост скорости оптимизатора SQL от передачи ему параметра по сревнению с работой без параметра с уменьшением скорости на уровне ASP, вызванным выделением доп.памяти на DataTable?
...
Рейтинг: 0 / 0
04.09.2006, 00:19
    #33960979
Махмуд
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
э-э-э... а эта твоя последняя фраза... Ты с кем щас разговаривал? :)

Я собрался биндиться к DetailsView, мне нужны данные по одному юзеру и в том, и в другом случае. Собссно я и так уже въехал, правда, путем долгих блужданий по сети, что вариант с запросом будет оптимальнее.
Только вот не могу никак понять, как мне сделать параметризованный запрос и прицепить его к ридеру. Просто интересно на будущее...--
Век живи - век учись, дураком помрешь
...
Рейтинг: 0 / 0
04.09.2006, 09:01
    #33961125
alig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
Если я правильно понял вопрос то так
SqlCommand command = new SqlCommand("select * from Users where UserID = @UserID");
command.Parameters.AddWithValue("@UserID", UserID);

И еще на счет динамического SQL. Если, допустим, ты получаешь UserID из QueryString представь что будет если какой нибудь шутник пришлет тебе UserID="1; delete from Users;"
...
Рейтинг: 0 / 0
04.09.2006, 10:53
    #33961394
Махмуд
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
Хм...Во как... Блин, каждый нет-программист должен быть еще и хакером.
Насколько я понял, в динамическом запросе с параметрами такая штука не пройдет? Или пройдет?--
Век живи - век учись, дураком помрешь
...
Рейтинг: 0 / 0
04.09.2006, 11:28
    #33961538
BlackTigerAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее?
>>Насколько я понял, в динамическом запросе с параметрами такая штука не пройдет? Или пройдет?

Не пройдет. Никак. 
How can men die better than facing fearful odds,
For the ashes of their fathers and the temples of their gods?

| Мой Brainbench | BookReader 1.1 | Wallpaper Cycler |
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Что быстрее? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]