```1c
    МассивУд1 = Новый массив();
    МассивУд2 = Новый массив();
    Для каждого стр из ТЗВД Цикл
    Отбор = Новый Структура();
    Отбор.Вставить("Комментарий",стр.Ссылка);
    Строки=ТабЗнач.НайтиСтроки(Отбор);
    Если Строки.Количество() = 1 Тогда
    МассивУд1.Добавить(стр);
    МассивУд2.Добавить(Строки[0]);
    КонецЕсли;
    КонецЦикла;

    Для Каждого Строка Из МассивУд1 Цикл
    ТЗВД.Удалить(Строка);
    КонецЦикла;

    Для Каждого Строка Из МассивУд2 Цикл
    ТабЗнач.Удалить(Строка);
    КонецЦикла;
```
---
Если нет индексов, значит у тебя не таблица значений.
Тогда так:

```1c
    МассивУд1 = Новый массив();
    МассивУд2 = Новый массив();
    ТаблицаДляПоиска = ТабЗнач.Выгрузить();
    ДобавленныйИндекс = ТаблицаДляПоиска.Индексы.Добавить("Комментарий");// добавляем индекс, чтобы поиск выполнялся быстро
    Для каждого стр из ТЗВД Цикл
    Отбор = Новый Структура();
    Отбор.Вставить("Комментарий",стр.Ссылка);
    Строки=ТаблицаДляПоиска.НайтиСтроки(Отбор);
    Если Строки.Количество() = 1 Тогда
    МассивУд1.Добавить(стр);
    МассивУд2.Добавить(Строки[0]);
    КонецЕсли;
    КонецЦикла;

    ТаблицаДляПоиска.Индексы.Удалить(ДобавленныйИндекс);//удаляем индекс, чтобы удаление строк таблицы значений не замедлялось из-за индекса

    Для Каждого Строка Из МассивУд1 Цикл
    ТЗВД.Удалить(Строка);
    КонецЦикла;

    Для Каждого Строка Из МассивУд2 Цикл
    ТаблицаДляПоиска.Удалить(Строка);
    КонецЦикла;
    ТабЗнач.Загрузить(ТаблицаДляПоиска);
```
---
Вставь строку

```1c
    ТабЗнач.Индексы.Добавить("Комментарий");
```

до циклов.
И будет выполняться меньше секунды.
---
также
---
Покажите весь код и скрин замера
---
Попробуйте так:

```1c
    МассивУд1 = Новый массив();
    МассивУд2 = Новый массив();
    ДобавленныйИндекс = ТабЗнач.Индексы.Добавить("Комментарий");// добавляем индекс, чтобы поиск выполнялся быстро
    Для каждого стр из ТЗВД Цикл
    Отбор = Новый Структура();
    Отбор.Вставить("Комментарий",стр.Ссылка);
    Строки=ТабЗнач.НайтиСтроки(Отбор);
    Если Строки.Количество() = 1 Тогда
    МассивУд1.Добавить(стр);
    МассивУд2.Добавить(Строки[0]);
    КонецЕсли;
    КонецЦикла;

    ТабЗнач.Индексы.Удалить(ДобавленныйИндекс);//удаляем индекс, чтобы удаление строк таблицы значений не замедлялось из-за индекса

    Для Каждого Строка Из МассивУд1 Цикл
    ТЗВД.Удалить(Строка);
    КонецЦикла;

    Для Каждого Строка Из МассивУд2 Цикл
    ТабЗнач.Удалить(Строка);
    КонецЦикла;
```
---
ну вот и весь код
---
такого нет "индксы"
---
Если нет индексов, значит у тебя не таблица значений.
Тогда так:

```1c
    МассивУд1 = Новый массив();
    МассивУд2 = Новый массив();
    ТаблицаДляПоиска = ТабЗнач.Выгрузить();
    ДобавленныйИндекс = ТаблицаДляПоиска.Индексы.Добавить("Комментарий");// добавляем индекс, чтобы поиск выполнялся быстро
    Для каждого стр из ТЗВД Цикл
    Отбор = Новый Структура();
    Отбор.Вставить("Комментарий",стр.Ссылка);
    Строки=ТаблицаДляПоиска.НайтиСтроки(Отбор);
    Если Строки.Количество() = 1 Тогда
    МассивУд1.Добавить(стр);
    МассивУд2.Добавить(Строки[0]);
    КонецЕсли;
    КонецЦикла;

    ТаблицаДляПоиска.Индексы.Удалить(ДобавленныйИндекс);//удаляем индекс, чтобы удаление строк таблицы значений не замедлялось из-за индекса

    Для Каждого Строка Из МассивУд1 Цикл
    ТЗВД.Удалить(Строка);
    КонецЦикла;

    Для Каждого Строка Из МассивУд2 Цикл
    ТаблицаДляПоиска.Удалить(Строка);
    КонецЦикла;
    ТабЗнач.Загрузить(ТаблицаДляПоиска);
```
---
Спасибо большое!
---
- размер таблиц сравнить
- замером производительности посмотреть где думает
---
```1c
    Строки=ТабЗнач.НайтиСтроки(Отбор);
```

вот здесь думает 90% времени
---
А что говорит замер производительности?
---
```1c
    Строки=ТабЗнач.НайтиСтроки(Отбор);
```

вот здесь думает 90% времени
---
Какой размер таблиц? Индексировать по этому полю пробовали?
---
2000-3000 строк
---
Поле типа строка? Какой длины?
---
да, вдвоем строки, 70 символов
---
попробовал у себя. 2 таблицы по 3000 строк. ищет меньше секунды. вы это на сервере. может сервер хилый хз
---
хмм, нет, по идее не хилый
---
Комментарий - это строка или ссылка??
стр.Ссылка - это строка или ссылка??
а если таблице добавить индексацию??
а если делать через запрос??
---
строки вдвоем
хмм, запрос ? как ?
---
```1c
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТЗВД", ТЗВД);
    Запрос.УстановитьПараметр("ТабЗнач", ТабЗнач);
    Запрос.Текст =
    "ВЫБРАТЬ
    |АВТОНОМЕРЗАПИСИ() КАК НомерСтроки,
    |Таблица.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ТЗВД
    |ИЗ
    |&ТЗВД КАК Таблица
    |;
    |ВЫБРАТЬ
    |АВТОНОМЕРЗАПИСИ() КАК НомерСтроки,
    |Таблица.Комментарий КАК Комментарий
    |ПОМЕСТИТЬ ТабЗнач
    |ИЗ
    |&ТабЗначКАК Таблица
    |;
    |ВЫБРАТЬ
    |ТЗВД.НомерСтроки КАК НомерСтроки1,
    |МАКСИМУМ(ТабЗнач.НомерСтроки) КАК НомерСтроки2
    |ПОМЕСТИТЬ Таблица
    |ИЗ
    |ТЗВД
    |ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабЗнач
    |ПО ТЗВД.Ссылка = ТабЗнач.Комментарий
    |СГРУППИРОВАТЬ ПО
    |ТЗВД.НомерСтроки
    |ИМЕЮЩИЕ
    |КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТабЗнач.НомерСтроки) = 1
    |;
    |ВЫБРАТЬ
    |НомерСтроки1 КАК НомерСтроки,
    |1 КАК id
    |ИЗ
    |Таблица
    |ОБЪЕДИНИТЬ ВСЕ
    |ВЫБРАТЬ
    |НомерСтроки2 КАК НомерСтроки,
    |2 КАК id
    |ИЗ
    |Таблица
    |УПОРЯДОЧИТЬ ПО
    |НомерСтроки УБЫВ
    |";
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующая() Цикл
    Если Выборка.id = 1 Тогда
    Таб = ТЗВД;
    Иначе
    Таб = ТабЗнач;
    КонецЕсли;
    Таб.Удалить(Выборка.НомерСтроки-1];
    КонецЦикла;
```

p.s. код написан от фонаря, так что нужен допил))) но думаю что суть передал
так же не знаю тип сравнивания... возможно нужно будет преобразовать в строку с определенным количество символов... только не в сравнении, а там где временная таблица (типа "|ВЫРАЗИТЬ(Таблица.Комментарий КАК СТРОКА(1000) КАК Комментарий")
возможно добавить индексацию для временных таблиц, которые будут сравниваться