Прошу подсказать ученику)
Запросы в циклах - вред и нужно стараться их там не использовать. Но ведь запрос запросу рознь) Подскажите, можно ли использовать запрос в цикле в данном примере или может есть велосипед какой?
Считываю из эксель -файла 1000 строк с полями Код, ФИО и КодВрача и делаю для каждой строки проверку на возможное наличие по этим параметрам сотрудника:
Запросы в циклах - вред и нужно стараться их там не использовать. Но ведь запрос запросу рознь) Подскажите, можно ли использовать запрос в цикле в данном примере или может есть велосипед какой?
Считываю из эксель -файла 1000 строк с полями Код, ФИО и КодВрача и делаю для каждой строки проверку на возможное наличие по этим параметрам сотрудника:
Запрос.Текст = "ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
| СотрудникиОрганизаций.Код = &Код
| И СотрудникиОрганизаций.Наименование = &Наименование
| И СотрудникиОрганизаций.КодВрача = &КодВрача
| И СотрудникиОрганизаций.Родитель = &Родитель";
ПоказатьПо теме из базы знаний
Найденные решения
(1)
Запросы в цикле - это как штрафной круг в биатлоне.
а) загрузите из excel в Таблицу значений
б) из Таблицы значений во временную таблицу в запросе (если записей больше 1000, проиндексируйте)
в) и соединяйте в запросе временную таблицу из б) и справочник сотрудников.
Пункты б) и в) можно написать в одном запросе.
Запросы в цикле - это как штрафной круг в биатлоне.
а) загрузите из excel в Таблицу значений
б) из Таблицы значений во временную таблицу в запросе (если записей больше 1000, проиндексируйте)
в) и соединяйте в запросе временную таблицу из б) и справочник сотрудников.
Пункты б) и в) можно написать в одном запросе.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Запросы в цикле - это как штрафной круг в биатлоне.
а) загрузите из excel в Таблицу значений
б) из Таблицы значений во временную таблицу в запросе (если записей больше 1000, проиндексируйте)
в) и соединяйте в запросе временную таблицу из б) и справочник сотрудников.
Пункты б) и в) можно написать в одном запросе.
Запросы в цикле - это как штрафной круг в биатлоне.
а) загрузите из excel в Таблицу значений
б) из Таблицы значений во временную таблицу в запросе (если записей больше 1000, проиндексируйте)
в) и соединяйте в запросе временную таблицу из б) и справочник сотрудников.
Пункты б) и в) можно написать в одном запросе.
(6)
Где и как нужно использовать ИНДЕКСИРОВАТЬ ПО :
Конструкцию рекомендуется использовать по полям временных таблиц, по которым эта временная таблица будет соединяться с другими таблицами баз данных. Это существенно повышает скорость выполнения соединения таблиц.
Однако следует учесть один момент. Построение индекса временной таблицы также требует времени на выполнение. Поэтому целесообразно использовать конструкцию «ИНДЕКСИРОВАТЬ ПО», только если Вы знаете, что во временной таблице будет не 1-2 записи. В противном случае эффект может быть обратным — быстродействие от индексированных полей не компенсирует времени построения индекса.
часто бесполезным
Где и как нужно использовать ИНДЕКСИРОВАТЬ ПО :
Конструкцию рекомендуется использовать по полям временных таблиц, по которым эта временная таблица будет соединяться с другими таблицами баз данных. Это существенно повышает скорость выполнения соединения таблиц.
Однако следует учесть один момент. Построение индекса временной таблицы также требует времени на выполнение. Поэтому целесообразно использовать конструкцию «ИНДЕКСИРОВАТЬ ПО», только если Вы знаете, что во временной таблице будет не 1-2 записи. В противном случае эффект может быть обратным — быстродействие от индексированных полей не компенсирует времени построения индекса.
Иногда запросы в цикле можно и нужно использовать. Нашел даже в типовой (вроде Бух3.0) такой запрос с комментарием, что на крупных базах так будет быстрее. Но в вашем случае лучше всё же обойтись одним запросом. Прочитайте файл в таблицу значений и выполните запрос с параметром.
(2)
Или хотя бы в цикле но по с обработкой по 100 строк разом запросом, ибо так и правда может оказаться быстрее. По 1 строке - незачет.
Но в реальных примерах между 100 и 1000 строк в ТЗ передаваемой в запрос я не увидел особой разницы, а вот между 1000 и 10000 - есть ньюансы
Иногда запросы в цикле можно и нужно использовать. Нашел даже в типовой (вроде Бух3.0) такой запрос с комментарием, что на крупных базах так будет быстрее. Но в вашем случае лучше всё же обойтись одним запросом. Прочитайте файл в таблицу значений и выполните запрос с параметром.
Или хотя бы в цикле но по с обработкой по 100 строк разом запросом, ибо так и правда может оказаться быстрее. По 1 строке - незачет.
Но в реальных примерах между 100 и 1000 строк в ТЗ передаваемой в запрос я не увидел особой разницы, а вот между 1000 и 10000 - есть ньюансы
Правда состоит в том, что никто никогда не узнает, как там в твоей обработке запросы. Заказчик увидит всего лишь, что обработка работает и сделана за полдня или за неделю. Нетрудно догадаться, в каком случае ему будет приятнее.
Если скорость выполнения будет критичной - переделаешь. А не будет, так и сойдет хоть в цикле хоть перебором.
Если скорость выполнения будет критичной - переделаешь. А не будет, так и сойдет хоть в цикле хоть перебором.
(9) вот! к тому же с екселем заведомо не будет слишком быстро...
Код должен быть понятным - даже спустя год. Должен правильно работать. А вот насколько он академически правильно написан, это дело даже не десятое, а сто десятое. Это же 1с, вспомогательный инструмент, который для заказчика должен быть простым, удобным и дешевым ( = быстро сделанным) в первую очередь.
Код должен быть понятным - даже спустя год. Должен правильно работать. А вот насколько он академически правильно написан, это дело даже не десятое, а сто десятое. Это же 1с, вспомогательный инструмент, который для заказчика должен быть простым, удобным и дешевым ( = быстро сделанным) в первую очередь.
(10)
Прочитать ексель в табличный документ, и работать уже с табличным документом.
Это достаточно быстро.
Другое дело, что если система загруженная и сама по себе,
выполнять 1000 запросов, чтобы еще сильнее нагрузить систему, это не хорошо.
А прочитать табличный документ в ТЗ и сунуть ее в запрос, ничего сложного в этом нет.
к тому же с екселем заведомо не будет слишком быстро
Прочитать ексель в табличный документ, и работать уже с табличным документом.
Это достаточно быстро.
Другое дело, что если система загруженная и сама по себе,
выполнять 1000 запросов, чтобы еще сильнее нагрузить систему, это не хорошо.
А прочитать табличный документ в ТЗ и сунуть ее в запрос, ничего сложного в этом нет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот