Понятно. Спасибо.
Итак:
Аксаптовский delete_from работает НЕ медленнее.
Аксапта - хорошая девочка - и четко следует указаниям программиста, посылая команду "delete from" с правильными условиями.
Разница проявляется не в ядре аксапты. А в том, что на SQL посылаются разные условия к команде.
Причем разные условия - потому что программист в Management Studio, скорее всего, "забыл" про компании.
Цитата:
Сообщение от
Shirmin Oleg
delete from SALESTABLE_TELECOMPHONTRA40478 where SALESTABLE_TELECOMPHONTRA40478.month = '2010-03-01'
Минуточку!!!!
это же совсем другие условия в запросе!!!
Обратите внимание, что Аксапта удаляет в пределах одной компании.
А вы удаляете данные изо всех компаний!!! (у вас нет условия dataareaid == "tz")
А почему вы в студии удаляете данные изо всех компаний?
Если вам компании неважны, то почему вы включили свойство SavePerCompany = Yes? Выключите это свойство и не будет компаний в этой таблице.
==================
Вы используете при запуске аксапты параметр, который позволяет изменить место dataareaid в индексе?
(подозреваю, что нет)
==================
Согласен с S.Kuskov, что сейчас удаление из аксапты не использует индекс. Либо использует, но делает дополнительный поиск по recid.
Как это ни странно, но удаление из студии у вас, скорее всего, вообще не использует индексы, а делает TableScan. И похоже table scan в конечном итоге работает быстрее. Как это ни странно.
Похоже, что вы удаляете почти все записи в таблице. 80%-90%-100% записей. так?
==================
Стесняюсь попросить... Вы планы обоих запросов показать сможете?
Или тоже объяснять нужно?
Если планы показать сложно, то
Рекомендация - вообще уберите индекс по month. Тогда, скорее всего, в обоих случаях (запрос из студии и запрос из аксапты) будет использоваться один и тот же план запроса. Или выключите свойство SavePerCompany, если вам не нужны компании в этой таблице.