Решение упирается в текст запроса. Варианты почему условие медленное:
1) Для условия использованы подзапросы
2) В запросе используются ИЛИ
3) Условия запроса по НЕ индексируемым полям, что требует скан в плане запроса СУБД.
Первый вариант (со сменой текста запроса динамического списка) - это глупости, не делайте так. Смена источника динамического запроса (помимо издержек на эту смену с переинициацией настроек компоновки) приводит к сбросу кеша динамического списка на стороне сервера. В моей практике был такой опыт, но у меня тогда реально разные источники были. Если можете все решить стандартными отборами, то именно так и делайте!