|
сложный ключ для соответствия | ☑ | ||
---|---|---|---|---|
0
lucifer
23.10.12
✎
10:36
|
Подскажите как можно сделать ключ для соответствия а-ля какая-нить структура, делаю так, не работает:
Ключ = Новый Структура; // заполнение структуры т.е. при попытки получить что-нибудь по такому ключу, всегда возвращается неопределено |
|||
1
Armando
23.10.12
✎
10:40
|
как вариант - преобразуй структуру в строку
|
|||
2
1Страх
23.10.12
✎
10:43
|
каждая структура это объект, они все различны, кроме самого себя
используй ТЗ |
|||
3
Reset
23.10.12
✎
10:43
|
Рекомендуется, чтобы в качестве ключа выступало значение примитивного типа или другого типа, значение которого может только присваиваться, но не может менять свое содержимое.
|
|||
4
Reset
23.10.12
✎
10:44
|
(с) СП
|
|||
5
Reset
23.10.12
✎
10:45
|
Да и странно писать Соотв[НекаяСтруктура] для получения значения, можно же это значени хранить прямо в структуре
|
|||
6
grigo
23.10.12
✎
10:45
|
Просто интересно, в какой задаче это понадобилось?
|
|||
7
1Страх
23.10.12
✎
10:46
|
(6) человек изобретает НайтиСтроки для ТЗ
|
|||
8
Ayvengo
23.10.12
✎
10:48
|
(7) ну на самом деле это хорошо, т.к. НайтиСтроки работает значительно медленнее чем соответствие. Так что подход отличный. Попробуй вложенные соответствия делать, как вариант. Искать сперва по одному ключу, находить соответствие и т.д.
|
|||
9
1Страх
23.10.12
✎
10:49
|
(8) индексировать колонки поиска можно
|
|||
10
Ayvengo
23.10.12
✎
10:50
|
(9) работает для ТЗ, которое ТЗ = Новый ТаблицаЗначений? Или только в запросе?
|
|||
11
1Страх
23.10.12
✎
10:51
|
(10) который Новый ТаблицаЗначений, скорости соответствия конечно не будет, но все же
|
|||
12
Ayvengo
23.10.12
✎
10:51
|
(9) т.е мне для таблицы еще нужно создать таблицу индексов, и ты хочешь сказать, что в итоге это будет быстрее чем Соответствие?
|
|||
13
1Страх
23.10.12
✎
10:52
|
(12) не будет быстрее, но скорость возрастет
таблицу индексов? индексы это встроенное средство ТЗ |
|||
14
Ayvengo
23.10.12
✎
10:52
|
(11) ну ок :) просто в некоторых случаях, у меня таких куча была (загрузка данных, к примеру) нужна большая скорость поиска.
|
|||
15
Ayvengo
23.10.12
✎
10:53
|
ИндексКоллекции , добавить, удалить .. ну массив .. хз что там :)
|
|||
16
Ayvengo
23.10.12
✎
10:54
|
(13) хотя спасибо, заодно изучил эту фигульку :))
|
|||
17
Ayvengo
23.10.12
✎
10:54
|
(13) просто тупо имена колонок добавляешь и оно само индексируется? :)
|
|||
18
lucifer
23.10.12
✎
10:56
|
(6) и ниже
нужно это для того что бы закэшировать данные и обращаться из цикла к соответствию, а не вызывать запрос из цикла каждый раз с новыми параметрами |
|||
19
1Страх
23.10.12
✎
10:56
|
(17) ага
ТЗ.Индексы.Добавить(ТупоИменаКолонок); |
|||
20
lucifer
23.10.12
✎
10:57
|
(7) ляпнул про ТЗ и понеслось, кто вообще про ТЗ говорил
|
|||
21
1Страх
23.10.12
✎
10:58
|
(20) а что плохого в ТЗ.НайтиСтроки?
|
|||
22
Ayvengo
23.10.12
✎
10:58
|
(20) ну так что решил делать?:)
|
|||
23
lucifer
23.10.12
✎
11:00
|
(22) не знаю, мб воспользуюсь советом (1)
|
|||
24
Reset
23.10.12
✎
11:02
|
Если Ключей не очень много, можешь попробовать использовать соответсвие соответствий.
Т.е. создать соответствие по 1 ключу, элементами которого будут соответсвия по другому ключу, элементами которого и тп Поиск: Соответсвие[Ключ1][Ключ2][Ключ3] |
|||
25
1Страх
23.10.12
✎
11:03
|
Можно попробовать еще Сответствие со значекнием Соответствие со значекнием Соответствие ... {число полей в структуре}
|
|||
26
1Страх
23.10.12
✎
11:03
|
(24) опередил
|
|||
27
Reset
23.10.12
✎
11:03
|
a la "многомерный" массив с индексом произвольного типа
|
|||
28
Reset
23.10.12
✎
11:03
|
(26) :)
|
|||
29
Ayvengo
23.10.12
✎
11:05
|
(24), (26) смотрите (8) :Р
|
|||
30
1Страх
23.10.12
✎
11:06
|
(29) точно
|
|||
31
Reset
23.10.12
✎
11:07
|
(29) Не читал :) ок я второй
|
|||
32
Ayvengo
23.10.12
✎
11:08
|
В одной фирме так был построен пересчет партионки :) Раньше работало 24 часа (документов где-то 500-700 в день), после соответствий стало работать 1 час :)
|
|||
33
Ayvengo
23.10.12
✎
11:09
|
+(32) имеется ввиду вложенные соответствия :)
|
|||
34
GANR
23.10.12
✎
11:09
|
(0) В качестве ключа, вероятно, следует использовать хеш-функцию, имеющую для каждого набора аргументов уникальное значение. http://infostart.ru/public/70030/
|
|||
35
1Страх
23.10.12
✎
11:09
|
(32) а на чистом SQL наверное могло и минуты ))
|
|||
36
lucifer
23.10.12
✎
11:10
|
(34) попробую, спасибо
|
|||
37
lucifer
23.10.12
✎
11:11
|
с вложенным соответствием тоже попробую
|
|||
38
GANR
23.10.12
✎
11:12
|
(36) Главный критерий которому должна удовлетворять функция: для любой пары наборов её аргументов не должно быть одинакового значения.
|
|||
39
Reset
23.10.12
✎
11:16
|
(12) Создание индексированной таблицы быстрее кстати, т.к. индексирование происходит единовременно, а при добавлении в соответвие его "индекс" правится каждый раз. Но поиск в соответвии(ях) все же несколько быстрее
|
|||
40
Ayvengo
23.10.12
✎
11:41
|
(35) минуты делаться и пару лет на разработку :D
|
|||
41
lucifer
23.10.12
✎
17:01
|
нет господа, с вложенными соответствиями не получится, например
Соответсвие[Ключ1][Ключ2][Ключ3] по ключу "Ключ1" у нас ничего не нашлось, и все упадет т.к. Соответсвие[Ключ1] = Неопределено |
|||
42
lucifer
23.10.12
✎
17:28
|
так что там с индексацией ТЗ ?
мне для ее включения нужно дополнительно что-то делать? |
|||
43
GANR
23.10.12
✎
17:29
|
(42) ХЕШ пробовал?
|
|||
44
Всеяд
23.10.12
✎
17:34
|
(42) Дополнительно надо читать ответы в своей ветке. Например, (19).
|
|||
45
lucifer
23.10.12
✎
17:39
|
(43) у меня ключ может повторяться, в соответствии затрется одно значение другим, буду ТЗ использовать, там массив найденых строк возвращается
|
|||
46
Ayvengo
23.10.12
✎
18:15
|
(45) используй хэш и соответствие :)
|
|||
47
Reset
23.10.12
✎
19:21
|
(41) Ты программист или где? ;)
а=Соответсвие1[Ключ1]; Если а<>Неопределено тогда а=а[Ключ2]; Если а<>Неопределено тогда а=а[Ключ3]; КонецЕсли; КонецЕсли; // а - результат |
|||
48
Reset
23.10.12
✎
19:22
|
А вообще я за ТЗ - проще и наглядней. Имхо.
|
|||
49
Reset
23.10.12
✎
19:24
|
Прочитал (45). Тогда только тз :\
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |