|
индексация - все нюансы | ☑ | ||
---|---|---|---|---|
0
ASimonova
26.07.23
✎
15:45
|
1С:Предприятие 8.3
вот что написано везде: ВЫБРАТЬ … ИЗ … ГДЕ <условие> СОЕДИНЕНИЕ … ПО <условие> ВЫБРАТЬ … ИЗ <ВиртуальнаяТаблица>(, <условие>) ИМЕЮЩИЕ <условие> Для каждого условия должен существовать подходящий индекс. Подходящим является индекс, удовлетворяющий следующим требованиям: 1) Индекс содержит все поля перечисленные в условии; 2) Эти поля находятся в самом начале индекса; 3) Эти поля идут подряд, то есть между ними не «вклиниваются» поля, не участвующие в условии запроса Самое непонятное - что значит п.3 и как его совместить с п.2? У меня есть временная таблица ВТТекущая, из ее 10 полей в условиях как сверху используются штук 8. При чем в одной ВТ условие ГДЕ выглядит как ВТТекущая.Поле1 = ХХХ И ВТТекущая.Поле2 = YYY И Поле4..., потом в соединениях что-нибудь типа ВТТекущая.Поле1 = ВТДругая.ХХХ И ВТТекущая.Поле3 = ВТДругая.YYY И Поле2... И Поле7..., потом еще в ИМЕЮЩИЕ какое-нибудь Поле2, и как их расположить? Предполагаю, что будет ИНДЕКСИРОВАТЬ ПО Поле1, Поле2, Поле4, Поле1, Поле3, Поле2, Поле7 Даже если предположить, что имеется ввиду это, то что тогда значит п.2? Если я сделаю так, то ВСЕ поля никак не могут быть в начале индекса. Кто-нибудь знает ТОЧНО как это работает? |
|||
1
СвинТуз
26.07.23
✎
15:53
|
Было время. Открыл idx файл в hex и сам все разглядел.
Теперь наглядности нет. А книги не для всех. |
|||
2
СвинТуз
26.07.23
✎
15:55
|
Или там 29-й байт об колено открыв dbf как текст.
Сделал свое дело, вернул на место заголовок таблицы и сказал, что так и было. |
|||
3
ASimonova
26.07.23
✎
15:57
|
(1) может вы даже знаете какую-то конкретную книгу, которая может помочь?
|
|||
4
СвинТуз
26.07.23
✎
15:58
|
Раньше на собеседовании гулял вопрос про первые 4 принципа нормализации таблиц.
Весело было. |
|||
5
mikecool
26.07.23
✎
15:59
|
(0) а что не понятно в написанном?
лучший вариант, когда условие по поле1, поле2, поле3 и индекс такой же: поле1, поле2, поле3 хуже, когда условие на поле1, поле3 |
|||
6
СвинТуз
26.07.23
✎
16:00
|
(3)
))) https://xn----itbbbjleimcldc5b.xn--p1ai/index.php?route=product/product&product_id=22588 Попов А.А., FoxPro 2.5/2.6. Создание приложений для FoxPro 2.5/2.6 в DOS и Windows, Учебное пособие. В книге дается техника программирования, средства и принципы формирования интерфейса приложения, надежность систем обработки данных... |
|||
7
H A D G E H O G s
26.07.23
✎
16:00
|
Представьте заголовок книги
1. Косметика - страница 1 1.1 Женская - страница 2 1.2 Мужская - страница 3 1.3 Прочее - страница 4 2. Обувь - страница 6 2.1 Женская - страница 8 2.2 Мужская - страница 11 2.3 Прочее - страница 14 Найдите мне Женская Пример хреновый, но смысл проглядывается. |
|||
8
СвинТуз
26.07.23
✎
16:01
|
(0)
Нужно забыть про 1с и почитать про индексы в целом |
|||
9
ASimonova
26.07.23
✎
16:03
|
(8) хорошо, спасибо
|
|||
10
СвинТуз
26.07.23
✎
16:04
|
(9)
Консультант наверное? За 7+ лет не понять как индекс строится. |
|||
11
H A D G E H O G s
26.07.23
✎
16:04
|
(0)
"Даже если предположить, что имеется ввиду это, то что тогда значит п.2? Если я сделаю так, то ВСЕ поля никак не могут быть в начале индекса. " "Если я сделаю так, то ВСЕ поля никак не могут быть в начале индекса. " - сделайте несколько индексов с разными последовательностями полей. |
|||
12
ASimonova
26.07.23
✎
16:05
|
(10) нет
|
|||
13
mikecool
26.07.23
✎
16:06
|
(11) а как это будет в запросе? несколько одинаковых времянок с разным индексированием?
|
|||
14
H A D G E H O G s
26.07.23
✎
16:06
|
(11) Чтобы искать по "Женская" - будет второе оглавление
1. Женская- страница 1 1.1 Косметика- страница 2 1.2 Обувь - страница 3 2. Мужская- страница 6 2.1 Косметика- страница 8 2.2 Обувь - страница 11 |
|||
15
H A D G E H O G s
26.07.23
✎
16:07
|
(13) Времянки (в 99%) индексировать не надо, я уже писал про это.
|
|||
16
mikecool
26.07.23
✎
16:08
|
(15) ты же понимаешь, что уходишь от рекомендаций вендора? )
|
|||
17
mistеr
26.07.23
✎
16:11
|
(0) Для временных таблиц эти правила не столь актуальны
|
|||
18
ASimonova
26.07.23
✎
16:11
|
(15) О_О а для чего же они нужны???
|
|||
19
СвинТуз
26.07.23
✎
16:12
|
(0)
Я лекции читать не умею. Делаю это плохо. Короче. Есть таблица с полями 1, 2 1. 1= "21", 2 = "43" 2. 1 = "56", 2 = "31" 3. 1 = "12", 2 = "12" Есть индекс 1+2 Примерное содержание файла индекса 1. "1212" номер строки 3 2. "2143" ---- 1 3. "5631" ---- 2 И далее по рашмор или проще говоря деление пополам ищем записи. Понятно что при поиске по полю 2 полный голяк. Нужен другой индекс. Как то так скомкано .... |
|||
20
H A D G E H O G s
26.07.23
✎
16:12
|
(18) Чтобы индексировать справочники, документы, регистры
|
|||
21
Мультук
гуру
26.07.23
✎
16:13
|
(0)
P.S. >> Для каждого условия должен существовать подходящий индекс. Кому должен ? Прямо вот должен ? Для условия ссылка.Проведен = Истина тоже должен существовать отдельный индекс в вакууме ? |
|||
22
H A D G E H O G s
26.07.23
✎
16:15
|
(21) Смех смехом, но было бы неплохо добавить поле "Проведен" в стандартные некластерные индексы.
|
|||
23
СвинТуз
26.07.23
✎
16:16
|
(16)
Белоусов учит на специалиста. Делает выборку из документов Реализации и тут же ее индексирует. Я ему в чат: "Зачем маэстро? В большем количестве случаев там будет одна запись." Но профессионала не вылечить ))) И ему сдавать? Старый лис разложил грабли и ловит новичков. Скучно и не интересно. |
|||
24
mistеr
26.07.23
✎
16:17
|
(0) Попробую объяснить п.3 на примере регистра сведений.
Есть индекс Период + Регистратор + НомерСтроки. Делаем выборку по регистратору. П.1 выполняется, п.2 нарушается, по периоду нет условия. Но есть еще индекс Регистратор + НомерСтроки. Тут все выполняется. Делаем выборку по периоду и по номеру строки. П. 1,2 выполняются, п.3 нарушается, по регистратору нет условия. |
|||
25
СвинТуз
26.07.23
✎
16:18
|
(22)
Регистры накопления для боящихся трудностей? |
|||
26
mistеr
26.07.23
✎
16:18
|
(22) Это для любителей строить отчеты по документам?
|
|||
27
СвинТуз
26.07.23
✎
16:19
|
(22)
Движения могут быть и не у проведенного документа ... |
|||
28
ASimonova
26.07.23
✎
16:19
|
(19) это как раз понятно, теорию мне объясняли. я не понимаю что как раз делать, если я хочу чтобы в моей таблице было два индекса: и 1+2 и отдельно 2. и может быть отдельно 1+2+3, как угодно. в запросе.
|
|||
29
СвинТуз
26.07.23
✎
16:20
|
Документу может быть запрещено проведение, а движения у него будут.
|
|||
30
ASimonova
26.07.23
✎
16:20
|
(20) я точно знаю что кто-то умудрялся индексацией по ВТ улучшать производительность в сотни раз. как раз такую историю нам недавно на работе поставили в пример и сказали учиться. пытаюсь найти как это сделать...
|
|||
31
СвинТуз
26.07.23
✎
16:21
|
(28)
Это смотря какая таблица. И что 1 и что 2. Теорию 1с надо смотреть. |
|||
32
mikecool
26.07.23
✎
16:21
|
(23) как мне кто-то в ответ на похожий вопрос ответил - это ты знаешь, что там 1 запись, а если в будущем что-то поменяется и будет более 1?
|
|||
33
mistеr
26.07.23
✎
16:21
|
(28) Для случая "как угодно" придумали агрегаты
|
|||
34
СвинТуз
26.07.23
✎
16:23
|
(32)
Га-но отмазка. До довольно большого количества идет перебор. Индекс игнорится. |
|||
35
ASimonova
26.07.23
✎
16:23
|
(31) хорошо, я сейчас перечитаю общую теорию по индексам, а есть пример книжки, в которой есть теория по индексам для 1с?
|
|||
36
СвинТуз
26.07.23
✎
16:25
|
(35)
На ИТС есть. Структура таблиц разбирается и индексы. Название говорить не буду. Боюсь соврать. |
|||
37
H A D G E H O G s
26.07.23
✎
16:25
|
(35) Раньше была годная статья по индексам на sql.ru, но его не стало.
|
|||
38
H A D G E H O G s
26.07.23
✎
16:26
|
(25) (26) Жись не ограничивается отчетами и регистрами.
|
|||
39
Мультук
гуру
26.07.23
✎
16:26
|
(25)
Я таки вас умоляю. В 1С уже давно движения делают непроведенные документы (привет РН "РезервыТоваровОрганизаций") |
|||
40
H A D G E H O G s
26.07.23
✎
16:26
|
(30) Если есть такие увлекательные истории - то это проеб в архитектуре либо структур данных, либо запроса.
|
|||
41
СвинТуз
26.07.23
✎
16:29
|
(39)
и Чо? Я о том и говорю. В регистры то движения попадают? |
|||
42
ASimonova
26.07.23
✎
16:30
|
(40) архитектура правда страдает, но мы же не можем получить все и сразу. если есть возможность улучшить производительность индексацией, то надо пользоваться... так все-таки это возможно? или точно врет?)
|
|||
43
СвинТуз
26.07.23
✎
16:31
|
(36)
Когда то я с ней на работу ездил. Выучил содержание, забыл как называется ))) |
|||
44
СвинТуз
26.07.23
✎
16:32
|
лет 10 и забудешь как обложка выглядит, тем более что смотришь на содержание, внутрь.
|
|||
45
СвинТуз
26.07.23
✎
16:33
|
лет 5 ее в руках не держал )))
|
|||
46
СвинТуз
26.07.23
✎
16:34
|
Читайте все что найдете. Не ошибетесь.
"Убивайте всех. Господь узнает своих." (С) |
|||
47
H A D G E H O G s
26.07.23
✎
16:35
|
||||
48
ASimonova
26.07.23
✎
16:37
|
(47) спасибо
|
|||
49
ASimonova
26.07.23
✎
16:37
|
(46) )))) я постараюсь)
|
|||
50
H A D G E H O G s
26.07.23
✎
16:47
|
(42) Врут.
Есть 2 редких варианта индексации ВТ: 1) Индексируем крайне большую ВТ, по которой мы потом соединимся с маленькой. Но, как только возникает крайне большая ВТ - возникает вопрос - кто тот гений, которых додумался ее создать, создание крайне большой ВТ передаст привет всем тем 100 ребятам, которые сейчас работают в базе. 2) Индексируем ВТ, с которой потом будем соединять другую таблицу по 2 и более полям, среди которых одно будет на неравенство и MS SQL предложит hash join. Крайне редкий случай, я уж и не помню, когда он мне встретился. |
|||
51
H A D G E H O G s
26.07.23
✎
16:52
|
Вот здесь хорошо разобраны механизмы соединений
https://habr.com/ru/articles/657331/ |
|||
52
ASimonova
26.07.23
✎
16:53
|
(51) спасибо!
|
|||
53
H A D G E H O G s
26.07.23
✎
16:56
|
(52) Вам рано читать (50), начните с (47). Пункт (51) - потом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |