Есть много элементов ИБ. Свыше тысячи. Есть XML файл, в котором содержится по некоторым элементам инфа, какие свойства обновить у этих элементов. Мне нужно после того, как обновлю все элементы из XML, обновить все оставшиеся элементы, которых не было в XML. Но нужно у них просто очистить эти свойства, то есть выполнить один и тот же запрос к нескольким элементам.
Сейчас реализовано все так, что пробегается скрипт по XML, берет в цикле каждую запись и обновляет соответствующий ей элемент ИБ через CIBlockElement::Update(); То есть сколько записей в XML, столько и UPDATE запросов. Сервер мощный, уходит полминуты на это все.
Поэтому вопросы:
1. Стоит ли переписывать на генерацию одного большого чистого SQL запроса для обновления свойств элементов?
2. Правильно ли делать выборку всех элементов разом или лучше разбить на две выборки: те элементы, которые есть в XML и те, которых нет.
3. Для элементов, которых нет в выборке, нужно сделать одно и то же действие - очистить несколько свойств. Правильно ли будет также пробегаться в цикле по элементам этим и для каждого выполнять CIBlockElement::Update() или же все-таки стоит один чистый SQL запрос написать и его выполнить?
4. Если через чистый запрос делать, то не возникнут ли проблем с ним, так как он будет довольно большим ( около 700 элементов и для каждого по 4 свойства обновить, того около 3000 UPDATE)?
Сейчас реализовано все так, что пробегается скрипт по XML, берет в цикле каждую запись и обновляет соответствующий ей элемент ИБ через CIBlockElement::Update(); То есть сколько записей в XML, столько и UPDATE запросов. Сервер мощный, уходит полминуты на это все.
Поэтому вопросы:
1. Стоит ли переписывать на генерацию одного большого чистого SQL запроса для обновления свойств элементов?
2. Правильно ли делать выборку всех элементов разом или лучше разбить на две выборки: те элементы, которые есть в XML и те, которых нет.
3. Для элементов, которых нет в выборке, нужно сделать одно и то же действие - очистить несколько свойств. Правильно ли будет также пробегаться в цикле по элементам этим и для каждого выполнять CIBlockElement::Update() или же все-таки стоит один чистый SQL запрос написать и его выполнить?
4. Если через чистый запрос делать, то не возникнут ли проблем с ним, так как он будет довольно большим ( около 700 элементов и для каждого по 4 свойства обновить, того около 3000 UPDATE)?
А все-таки жаль: иногда над победами нашими
встают пьедесталы, которые выше побед. Булат Окуджава
встают пьедесталы, которые выше побед. Булат Окуджава