|
v7: Выбрать элементы справочника с одинаковым наименованием | ☑ | ||
---|---|---|---|---|
0
Dimon1C
04.09.15
✎
13:45
|
ТекстЗапроса = "
|Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |НаименованиеНоменклатуры = Справочник.Номенклатура.Наименование; |Условие (НаименованиеНоменклатуры = ВыбНоменкратура); |Группировка Номенклатура без групп; |"; Работает оооочень медленно, что делаю не так, надо быстро выбрать одинаковые значения? |
|||
1
Фокусник
04.09.15
✎
14:00
|
|
|||
2
ДенисЧ
04.09.15
✎
14:02
|
select descr, count(*)
from $справочник.Номенклатура group by desc having count(*) > 1 |
|||
3
Dimon1C
04.09.15
✎
14:09
|
(1) Перебор двойной, сложность n в квадрате.
(2) А это как, я только по русски умею... |
|||
4
Dimon1C
04.09.15
✎
14:13
|
Пока склоняюсь к методу - запихнуть в ТЗ в отсортированном виде по наименованию, а там уже искать.
|
|||
5
Dimon1C
04.09.15
✎
14:13
|
Просто странно почему запрос в (0) не работает по индексируемому полю Наименование, он должен вообще моментом выполняться.
|
|||
6
ДенисЧ
04.09.15
✎
14:16
|
(5) потому что он сравнение по наименованию делает...
|
|||
7
PuhUfa
04.09.15
✎
14:18
|
Зачем вообще условие в (0)?
|
|||
8
lera01
04.09.15
✎
14:26
|
Вывести в таблицу значений, добавить колонку, записать туда 1 и свернуть по наименованию с подсчетом итогов по этой колонке. Где>1 там дубли
|
|||
9
akaBrr
04.09.15
✎
14:33
|
||||
10
Фокусник
04.09.15
✎
16:09
|
(3) "Перебор двойной"
Посмотри внимательнее... Выполняется поиск по наименованию (потом найденный элемент "удаляется" далее отмена транзации, т.е. удаления не будет, и поиск еще раз по наименованию). Работает быстро. Это рабочий код из реальной базы, которой уже лет 10... А перебор будет только в том случае, если элемент "удалить" нельзя - заблокирован каким-либо пользователем
;) PS конечно, вариант из (1) не идет в сравнение с "прямыми запросами", но с прямыми запросами и вопроса в (0) не было бы ;) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |