Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) часть 5 1с sql  таблицы rg изнутри (число прочтений - 14347 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #30 - 26. Ноября 2008 :: 16:00
Печать  
kiruha писал(а) 26. Ноября 2008 :: 15:54:
А для чего еще нужен индекс в таблице движений регистра -
чтобы либо быстро рассчитывать остатки, либо быстро смотреть движения в отчетах.
И то и другое родной индекс 1С (в RA) делает плохо.

Разумно в регистрах ставить "отбор движений" по Номенклатуре и Контрагент(или соответственно Договор)
По умолчанию в 1С этих отборов нет - видимо ориентация на мелкие фирмы.

не только. Может исходили из того т что выбрать остатки только из
rg гораздо лучше и быстрее чем из двух таблиц rg и ra.
а если строиться матерьяльная ведомость то все равно сканируется весь ra по датам.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #31 - 26. Ноября 2008 :: 16:02
Печать  
И еще 1с конструктор - универсальное решение и пограничные случаи выпадают  Смех
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #32 - 26. Ноября 2008 :: 16:14
Печать  
kiruha писал(а) 26. Ноября 2008 :: 15:54:
А для чего еще нужен индекс в таблице движений регистра -
чтобы либо быстро рассчитывать остатки, либо быстро смотреть движения в отчетах.
И то и другое родной индекс 1С (в RA) делает плохо.

а можно это утверждение развернуть тезисно.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #33 - 27. Ноября 2008 :: 05:10
Печать  
spock писал(а) 26. Ноября 2008 :: 16:14:
kiruha писал(а) 26. Ноября 2008 :: 15:54:
А для чего еще нужен индекс в таблице движений регистра -
чтобы либо быстро рассчитывать остатки, либо быстро смотреть движения в отчетах.
И то и другое родной индекс 1С (в RA) делает плохо.

а можно это утверждение развернуть тезисно.

смотри что писал kiruha.
Если нужен остаток товара "бутылка" на 15.11 мы сначала
должны найти по rg найти остаток на 01.11 после этого переберать всю ra до 15 числа вычисляяя остаток бутылка.
Без индекса по ra ( движения региста) этот перебор долгий когда этих движений много.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #34 - 27. Ноября 2008 :: 05:22
Печать  
kiruha писал(а) 26. Ноября 2008 :: 15:54:
А для чего еще нужен индекс в таблице движений регистра -
чтобы либо быстро рассчитывать остатки, либо быстро смотреть движения в отчетах.
И то и другое родной индекс 1С (в RA) делает плохо.

Разумно в регистрах ставить "отбор движений" по Номенклатуре и Контрагент(или соответственно Договор)
По умолчанию в 1С этих отборов нет - видимо ориентация на мелкие фирмы.

посмотрел но ведь в регистре остатоков есть
а - быстрая обработка движений добавляет datetime_id_doc в индекс вместо iddoc
б - отбор движений вот он то и создает индекс по измерению
или по реквизиту регистра
индекс равен = ( измерение,кластер индекс )

также можно создать дополнительный индекс и по rg итоги
индекс = период, измерение.

Я придумал ведь еще можно по измерению регистра создать индекс
как "графа отбора 1с" можно посмотреть что он при этом понасоздает - для моих задач это точно не нужно



Так что получается с индексами для регистра внутри 1с все в порядке создавай обдуманно какие тебе нужны
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #35 - 27. Ноября 2008 :: 05:32
Печать  
Z1 писал(а) 27. Ноября 2008 :: 05:10:
Если нужен остаток товара "бутылка" на 15.11 мы сначала
должны найти по rg найти остаток на 01.11 после этого переберать всю ra до 15 числа вычисляяя остаток бутылка.
Без индекса по ra ( движения региста) этот перебор долгий когда этих движений много.

На примере гипотетического регистра ОстаткиТоваров (Товар, Склад, Фирма):
Порядок расстановки измерений в регистре: Товар, Склад, Фирма. У всех выставлены отборы итогов и движений.
В итоге получаем индексы такие:
1. для RA:
  • iddoc + lineno_ + actno (I)
  • date_time_iddoc + lineno_ + actno (II)
  • Товар + date_time_iddoc + lineno_ + actno (III)
  • Склад + date_time_iddoc + lineno_ + actno (IV)
  • Фирма + date_time_iddoc + lineno_ + actno (V)

2. Для RG:
  • period + Товар + Склад + Фирма (I)
  • period + Склад (II)
  • period + Фирма (III)


И для случая, что нужен остаток для "бутылка" на 15.11 будет так:
1. Получаем остаток из RG на 01.11 по товару "бутылка" -> попадаем в индекс RG_(I), взяли данные крайне дешево.
2. Получаем движения из RA от 01.11 по 15.11 для товара "бутылка" -> попадаем в индекс RA_(III), тоже взяли данные ранжированием очень дешево.
3. Объединили агрегированием и получили результат.
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #36 - 27. Ноября 2008 :: 05:41
Печать  
ну и я о том же.
Так что пусть kiruha сам поясняет что он имеет ввиду.
я думаю что он бы хотел наверное индекс
( товар,склад,кластерный индекс) чтобы еще быстрее вычислять остаток товара бутылка на заданном складе на 15 число.
или
( период,товар,склад,кластерный индекс) чтобы еще быстрее вычислять остаток товара бутылка на заданном складе на 15 число.

  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #37 - 27. Ноября 2008 :: 05:46
Печать  
Есть мнение, что требуется все-таки заглянуть хотя бы в EM (Enterprise Manager) на предмет ознакомления со структурой индексов регистров.
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #38 - 27. Ноября 2008 :: 06:47
Печать  
spock писал(а) 27. Ноября 2008 :: 05:46:
Есть мнение, что требуется все-таки заглянуть хотя бы в EM (Enterprise Manager) на предмет ознакомления со структурой индексов регистров.

Добавлю от себя, что уважаемому Z1 неплохо бы ознакомиться с
http://www.sql.ru/articles/mssql/03013101Indexes.shtml
а также просмотреть форум на SQL.RU на предмет
http://www.sql.ru/forum/actualtopics.aspx?search=%EA%EB%E0%F1%F2%E5%F0%ED%FB%E9+...
И очень хотелось бы не просто теоретических обоснований, а с приведением планов запросов, DURATION запросов и их COST из планов.
  
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #39 - 27. Ноября 2008 :: 06:50
Печать  
leshik писал(а) 27. Ноября 2008 :: 06:47:
spock писал(а) 27. Ноября 2008 :: 05:46:
Есть мнение, что требуется все-таки заглянуть хотя бы в EM (Enterprise Manager) на предмет ознакомления со структурой индексов регистров.

Добавлю от себя, что уважаемому Z1 неплохо бы ознакомиться с
http://www.sql.ru/articles/mssql/03013101Indexes.shtml
а также просмотреть форум на SQL.RU на предмет
http://www.sql.ru/forum/actualtopics.aspx?search=%EA%EB%E0%F1%F2%E5%F0%ED%FB%E9+...
И очень хотелось бы не просто теоретических обоснований, а с приведением планов запросов, DURATION запросов и их COST из планов.

спасибо буду читать
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #40 - 27. Ноября 2008 :: 07:54
Печать  
Z1 писал(а) 27. Ноября 2008 :: 05:41:
ну и я о том же.
Так что пусть kiruha сам поясняет что он имеет ввиду.



Да я имел ввиду простую вещь.
По умолчанию в типовых в RA стоит только один индекс iddoc + lineno_ + actno (I).
И что этого индекса не достаточно.

Индекс
Товар + date_time_iddoc + lineno_ + actno (III)
нужно добавлять правкой конфигурации, о чем и писал :
kiruha писал(а) 26. Ноября 2008 :: 15:54:
Разумно в регистрах ставить "отбор движений" по Номенклатуре и Контрагент(или соответственно Договор)
По умолчанию в 1С этих отборов нет - видимо ориентация на мелкие фирмы.


Извиняюсь, если писал достаточно непонятно.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #41 - 28. Ноября 2008 :: 05:11
Печать  
Почитав про индексы в  MS SQL я немного понял в чем я заблуждался.
Я представлял  индексы как линейный список, а индексы устроены  хитрее, лучше ( B-деревья).
А индекс как список можно рассматривать только на логическом уровне.

И БОЛЬШОЙ пересчет индексов идет только во время подгрузки УРБД, для всех остальных случаях при правельной фрагментации индексов сами индексы перестраивается очень быстро.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #42 - 28. Ноября 2008 :: 06:07
Печать  
и еще вопрос предположим что у нас есть регистр
остатки с такой структурой
Фирма,Номенклатура,Склад и если нам надо очень  быстро получать остатки Номенклатура,Склад на произвольную дату
текущего месяца то самый быстрsй для этого индекс будет
по таблице Ra
Товар,Склад,Date_Time_IDDOC desc

просто в статье сказано что составной индекс быстее чем
несколько отдельных индекса.
или я все равно где=то ошибаюсь ?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #43 - 28. Ноября 2008 :: 11:33
Печать  
Z1 писал(а) 28. Ноября 2008 :: 06:07:
и еще вопрос предположим что у нас есть регистр
остатки с такой структурой
Фирма,Номенклатура,Склад и если нам надо очень  быстро получать остатки Номенклатура,Склад на произвольную дату
текущего месяца то самый быстрsй для этого индекс будет
по таблице Ra
Товар,Склад,Date_Time_IDDOC desc

просто в статье сказано что составной индекс быстее чем
несколько отдельных индекса.
или я все равно где=то ошибаюсь ?


Да. Только штатными средствами такой индекс создать нельзя.
Можно вручную в EM, но при изменении конфигурации 1С его грохнет.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: часть 5 1с sql  таблицы rg изнутри
Ответ #44 - 28. Ноября 2008 :: 16:40
Печать  
Z1 писал(а) 28. Ноября 2008 :: 06:07:
просто в статье сказано что составной индекс быстее чем
несколько отдельных индекса.

Я без личного наезда, твоей пользы для: а понял ли ты почему композитный индекс (покрывающий/covered) лучше нескольких отдельных?

ps: Я подсказки дал в скобках для поиска, если не найдешь, думаю, нам не проблемно будет пояснить.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать