Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 01.10.2010
Сообщений: 47

Как оптимизировать приведенный запрос

16.12.2012, 17:22. Показов 1051. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имею следующий код (VS2012, C#):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SqlCommand command = new SqlCommand("", sqlConnection1);
SqlDataReader reader;
string[] array; // Некий массив, длина которого может достигать >10000
 
for (int i = 0; i < array.Length; i++)
{
   command.CommandText = "SELECT [ID] FROM [Table] WHERE [Param] = '" + array[i] + "'";
   reader = command.ExecuteReader();
              
    if (reader.HasRows)
    {
      // ...
      // reader.Close(); 
    } 
    else
    {
      // ...
      // reader.Close();
    }              
}
БД - локальная формата *.mdf
Таблица "Table" отсортирована по столбцу "Param".

При длине массива "array" больше 10000 всё подвисает...

Можно ли оптимизировать код?

P.S. command.ExecuteScalar() дает примерно тот же результат
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2012, 17:22
Ответы с готовыми решениями:

Оптимизировать запрос linq
var users = manageUserRepository.GetUsers().OrderBy(gridSortOptions.Column, gridSortOptions.Direction).AsPagination(page ?? 1, 10); ...

Оптимизировать запрос SELECT исключив одно условие CASE
Коллеги, не могу найти способ проще написать запрос. Вообщем необходимо в MyTable_1 вставить три поля Field1, Field2, Field3. Первое поле я...

Оптимизировать приведенный код
Добрый всем день! На мое тестовое задание при приеме на курсы php сказали, что выполнено на низком уровне. Какпереписать это правильно? ...

9
73 / 73 / 10
Регистрация: 18.09.2012
Сообщений: 208
17.12.2012, 17:52
Залить массив строк в какую либо таблицу на сервере и вытащить результат, использую join с этой таблицей.
Может ускориться, надо проверять...
0
1 / 1 / 1
Регистрация: 01.10.2010
Сообщений: 47
17.12.2012, 22:57  [ТС]
Значения массива строк определяются в момент выполнения!
0
73 / 73 / 10
Регистрация: 18.09.2012
Сообщений: 208
18.12.2012, 06:20
1. Залить строки во время выполнения
2. Еще можно попробовать сконструировать из массива строк одну строку (или несколько), например, таких:
new_str = #str1#str2#...#. А далее такая выборка:
SQL
1
SELECT [ID] FROM [TABLE] WHERE PATINDEX('%#' + [Param] + '#%', '" + new_str + "') > 0";
0
57 / 57 / 15
Регистрация: 22.09.2011
Сообщений: 319
18.12.2012, 08:31
1. Уменьшить длину массива.
2. Написать нормальный код для проекта, а не тот, что Вы привели в примере.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.12.2012, 10:07
Цитата Сообщение от cyt Посмотреть сообщение
Можно ли оптимизировать код?
а может следует вытащить на клиента все данные и уже на месте разбирать по условиям, чем 10 тыс раз открывать соединение?

А вообще задача какая-то кривая, недостаточно информации, чтобы понять, что ты делаешь и почему именно так делаешь
0
1 / 1 / 1
Регистрация: 01.10.2010
Сообщений: 47
18.12.2012, 12:28  [ТС]
Товарищи, вот есть такой кусок кода. Задача - оптимизировать при возможности.

Добавлено через 18 минут
Например, требуется такой функционал: отрывок из книги разбивается на слова, и для этих слов вытаскиваются определения из базы данных.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.12.2012, 15:27
cyt, оптимизация заключается в уменьшении выборки в объемах необходимых пользователю (выделил строчку, для неё и подтянулись значения). А заливать весь толковый словарь для четырёхтомника "Война и мир" - изврат не подлежащий оптимизации.
0
57 / 57 / 15
Регистрация: 22.09.2011
Сообщений: 319
18.12.2012, 15:50
cyt, самое прозрачное решение - уменшить размер массива "Некий массив, длина которого может достигать >10000";
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
18.12.2012, 15:59
Можно предварительно записать весь массив в отдельную таблицу в БД. А потом join-ом(возможно left jon) вытащить все записи разом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2012, 15:59
Помогаю со студенческими работами здесь

Можно ли оптимизировать приведенный код
Понимаю, что нужно создать ещё одно измерение массива, но боюсь, что я уже и в этом запутался. ... byte mac10 = new...

Исправить и оптимизировать приведенный код
data SEGMENT byte ;Сегмент даних s1 db 1,2,3,4,5,6,7,8 ;Елементи даних s2 db ?,?,?,?,?,?,?,? ...

Как оптимизировать запрос
Добрый день! Есть таблица tasks у нее связь к log (один-ко-многим) и также у tasks к таблице template (один-ко-многим). Как лучше вывести...

Как оптимизировать запрос?
Есть запрос который по фильтру возвращает записи разбивая по страницам и выбирая только указанную страницу. А так же возвращает общее...

Как оптимизировать запрос
есть таблица reports, структура примерно такая id int(11) | date int(11) | login varchar(50) | money double(10,2)| В ней 9 млн...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru