Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Cвой журнал с множественным отбором.... (число прочтений - 8132 )
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Cвой журнал с множественным отбором....
28. Июля 2008 :: 05:42
Печать  
Стандартная нестандартная задача Улыбка
Журнал с 6 видами доков, возможным отбором по 4 реквизитам в разном сочетании.
Табличное поле и все дела. Работает. Но меееееееедленно
Пробовал и класс РасшЖурнал использовать - тоже самое.
Попробовал с вьюхами - из-за того, что на них в "стандарте" не повесишь индексы - тоже медлнно.
Пните в нужном направлении, плз...
Текст запроса обычный - к 1сжурнал с отбором по видам, и джойны к шапкам соответсующих доков.
  
Наверх
ICQ  
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #1 - 28. Июля 2008 :: 08:51
Печать  
Умные дядьки, скажите хоть что-нибудь....
  
Наверх
ICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #2 - 28. Июля 2008 :: 09:06
Печать  
Даже на анекдот не тянет.
Как думаешь о чем тебя тут спросят? А может быть не спросят?
  
Наверх
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #3 - 28. Июля 2008 :: 09:16
Печать  
trdm писал(а) 28. Июля 2008 :: 09:06:
Даже на анекдот не тянет.
Как думаешь о чем тебя тут спросят? А может быть не спросят?

Ну что, запрос привести? дык в нем "ничего военного"©.
План запроса курю-курю, курю-курю - "не  вставляет".
Готов ответить на все вопросы....
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #4 - 28. Июля 2008 :: 09:48
Печать  
ну собственно - приводи все что сказал:
Цитата:
запрос привести

Цитата:
План запроса
  
Наверх
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #5 - 28. Июля 2008 :: 09:57
Печать  
Код
Выбрать все
SELECT
  Жур.row_id as row_id,
  Жур.Date_Time_IDDoc as Позиция,

  CASE
  WHEN Жур.IsMark = 1 THEN 6
  WHEN Жур.Closed & 1 = 1 THEN 1
  ELSE 0 END as Картинка,

  Жур.IDDoc as [Документ $Документ],
  Жур.IDDocDef as Документ_вид,

CASE
WHEN Жур.IDDOCDEF = $ВидДокумента.БюджетДоставки THEN 'БюджетДоставки'
WHEN Жур.IDDOCDEF = $ВидДокумента.ВозвратОтПокупателя THEN 'Возврат от покупателя'
WHEN Жур.IDDOCDEF = $ВидДокумента.ВозвратПоставщику THEN 'Возврат поставщику'
WHEN Жур.IDDOCDEF = $ВидДокумента.Доверенность THEN 'Доверенность'
WHEN Жур.IDDOCDEF = $ВидДокумента.ЗаказПоставщику THEN 'Заказ поставщику'
WHEN Жур.IDDOCDEF = $ВидДокумента.ЗаявкаПокупателя THEN 'Заявка покупателя'
WHEN Жур.IDDOCDEF = $ВидДокумента.ИнвентаризацияТМЦ THEN 'Инвентаризация ТМЦ'
WHEN Жур.IDDOCDEF = $ВидДокумента.ОприходованиеТМЦ THEN 'Оприходование ТМЦ'
WHEN Жур.IDDOCDEF = $ВидДокумента.Остатки THEN 'Остатки'
WHEN Жур.IDDOCDEF = $ВидДокумента.ПеремещениеТМЦ THEN 'Перемещение ТМЦ'
WHEN Жур.IDDOCDEF = $ВидДокумента.ПоступлениеПрочее THEN 'Поступление (услуги и пр.)'
WHEN Жур.IDDOCDEF = $ВидДокумента.ПоступлениеТМЦ THEN 'Поступление ТМЦ'
WHEN Жур.IDDOCDEF = $ВидДокумента.ПКО THEN 'Приходный кассовый ордер'
WHEN Жур.IDDOCDEF = $ВидДокумента.РКО THEN 'Расходный кассовый ордер'
WHEN Жур.IDDOCDEF = $ВидДокумента.Реализация THEN 'Реализация '
WHEN Жур.IDDOCDEF = $ВидДокумента.РеализацияПрочее THEN 'Реализация (ОС, НМА и пр.)'
WHEN Жур.IDDOCDEF = $ВидДокумента.СнятиеОстаткаЗаказа THEN 'Снятие остатка заказа'
WHEN Жур.IDDOCDEF = $ВидДокумента.СписаниеТМЦ THEN 'Списание ТМЦ'
WHEN Жур.IDDOCDEF = $ВидДокумента.Сторно THEN 'Сторнирование документа - основания'
WHEN Жур.IDDOCDEF = $ВидДокумента.СчетФактураВыданный THEN 'Счет-фактура выданный'
WHEN Жур.IDDOCDEF = $ВидДокумента.СчетФактураПолученный THEN 'Счет-фактура полученный'  
END as ВидДокумента,
CAST(LEFT(Жур.DATE_TIME_IDDOC, 8) as DATETIME) as ДатаДок,
Жур.DOCNO as НомерДок,
СпрКонтрагент.Descr as Контрагент,
СпрДоговор.Descr as Договор,
СпрСклад.Descr as Склад,
нный.Сумма,$ДокСчетФактураПолученный.Сумма) as [Сумма],
СпрАвтор.Descr as Автор,
СпрПроект.Descr as Проект,
СпрФирма.Descr as Фирма,
СпрЮрЛицо.Descr as ЮрЛицо,
Жур.$ОбщийРеквизит.ПравилоМиграции as [ПравилоМиграции],
Жур.$ОбщийРеквизит.ХроноПозиция as [ХроноПозиция],
Жур.$ОбщийРеквизит.СтатусДокумента as [СтатусДокумента $Перечисление.СтатусыДокументовОтгрузки]

FROM
	_1SJourn as Жур (NOLOCK)	    

LEFT JOIN $Документ.БюджетДоставки as ДокБюджетДоставки ON
    Жур.IDDoc = ДокБюджетДоставки.IDDoc	    

LEFT JOIN $Документ.ВозвратОтПокупателя as ДокВозвратОтПокупателя ON
    Жур.IDDoc = ДокВозвратОтПокупателя.IDDoc	    

LEFT JOIN $Документ.ВозвратПоставщику as ДокВозвратПоставщику ON
    Жур.IDDoc = ДокВозвратПоставщику.IDDoc	    

LEFT JOIN $Документ.Доверенность as ДокДоверенность ON
    Жур.IDDoc = ДокДоверенность.IDDoc	    

LEFT JOIN $Документ.ЗаказПоставщику as ДокЗаказПоставщику ON
    Жур.IDDoc = ДокЗаказПоставщику.IDDoc	    

LEFT JOIN $Документ.ЗаявкаПокупателя as ДокЗаявкаПокупателя ON
    Жур.IDDoc = ДокЗаявкаПокупателя.IDDoc	    

LEFT JOIN $Документ.ИнвентаризацияТМЦ as ДокИнвентаризацияТМЦ ON
    Жур.IDDoc = ДокИнвентаризацияТМЦ.IDDoc	    

LEFT JOIN $Документ.ОприходованиеТМЦ as ДокОприходованиеТМЦ ON
    Жур.IDDoc = ДокОприходованиеТМЦ.IDDoc	    

LEFT JOIN $Документ.Остатки as ДокОстатки ON
    Жур.IDDoc = ДокОстатки.IDDoc	    

LEFT JOIN $Документ.ПеремещениеТМЦ as ДокПеремещениеТМЦ ON
    Жур.IDDoc = ДокПеремещениеТМЦ.IDDoc	    

LEFT JOIN $Документ.ПоступлениеПрочее as ДокПоступлениеПрочее ON
    Жур.IDDoc = ДокПоступлениеПрочее.IDDoc	    

LEFT JOIN $Документ.ПоступлениеТМЦ as ДокПоступлениеТМЦ ON
    Жур.IDDoc = ДокПоступлениеТМЦ.IDDoc	    

LEFT JOIN $Документ.ПКО as ДокПКО ON
    Жур.IDDoc = ДокПКО.IDDoc	    

LEFT JOIN $Документ.РКО as ДокРКО ON
    Жур.IDDoc = ДокРКО.IDDoc	    

LEFT JOIN $Документ.Реализация as ДокРеализация ON
    Жур.IDDoc = ДокРеализация.IDDoc	    

LEFT JOIN $Документ.РеализацияПрочее as ДокРеализацияПрочее ON
    Жур.IDDoc = ДокРеализацияПрочее.IDDoc	    

LEFT JOIN $Документ.СнятиеОстаткаЗаказа as ДокСнятиеОстаткаЗаказа ON
    Жур.IDDoc = ДокСнятиеОстаткаЗаказа.IDDoc	    

LEFT JOIN $Документ.СписаниеТМЦ as ДокСписаниеТМЦ ON
    Жур.IDDoc = ДокСписаниеТМЦ.IDDoc	    

LEFT JOIN $Документ.Сторно as ДокСторно ON
    Жур.IDDoc = ДокСторно.IDDoc	    

LEFT JOIN $Документ.СчетФактураВыданный as ДокСчетФактураВыданный ON
    Жур.IDDoc = ДокСчетФактураВыданный.IDDoc	    

LEFT JOIN $Документ.СчетФактураПолученный as ДокСчетФактураПолученный ON
    Жур.IDDoc = ДокСчетФактураПолученный.IDDoc

 

  
Наверх
ICQ  
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #6 - 28. Июля 2008 :: 09:58
Печать  
Код
Выбрать все
LEFT JOIN $Справочник.Контрагенты as СпрКонтрагент
ON СпрКонтрагент.ID = т)

LEFT JOIN $Справочник.Договоры as СпрДоговор
ON СпрДоговор.ID = говор,$ДокСчетФактураВыданный.Договор,$ДокСчетФактураПолученный.Договор)

LEFT JOIN $Справочник.Склады as СпрСклад
ON СпрСклад.ID = клад)

LEFT JOIN $Справочник.Пользователи as СпрАвтор
ON СпрАвтор.ID = Жур.$ОбщийРеквизит.Автор

LEFT JOIN $Справочник.Проекты as СпрПроект
ON СпрПроект.ID = Жур.$ОбщийРеквизит.Проект

LEFT JOIN $Справочник.Фирмы as СпрФирма
ON СпрФирма.ID = Жур.$ОбщийРеквизит.Фирма

LEFT JOIN $Справочник.СвоиЮрЛица as СпрЮрЛицо
ON СпрЮрЛицо.ID = Жур.$ОбщийРеквизит.ЮрЛицо
INNER JOIN
  _1SCRDOC as ОтборКонтрагент ON ОтборКонтрагент.ChildID = Жур.IDDoc AND
			  ОтборКонтрагент.MDID = $ГрафаОтбора.Контрагент AND
			  ОтборКонтрагент.ParentVal = :Контрагент* AND
			  ОтборКонтрагент.Child_Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
WHERE
   Жур.IDDocDef IN анный,$ВидДокумента.СчетФактураПолученный) AND
(Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
 

  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #7 - 28. Июля 2008 :: 10:20
Печать  
Дык это... Какой же ты скорости хочешь от такого запроса?
Как минимум, сделай отдельную таблицы, из которой запрос у тебя будет брать данные во избежания этой кучи связываний и страшных Case-ов и Coalesce.
И еще покажи как ключ порядка назначаешь.
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #8 - 28. Июля 2008 :: 10:30
Печать  
sadovnikov писал(а) 28. Июля 2008 :: 10:20:
Дык это... Какой же ты скорости хочешь от такого запроса?
Как минимум, сделай отдельную таблицы, из которой запрос у тебя будет брать данные во избежания этой кучи связываний и страшных Case-ов и Coalesce.
И еще покажи как ключ порядка назначаешь.

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Cвой журнал с множественным отбором....
Ответ #9 - 28. Июля 2008 :: 12:37
Печать  
УстКлючПорядка("MDID,PARENTVAL,CHILD_DATE_TIME_IDDOC");

?
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #10 - 28. Июля 2008 :: 12:41
Печать  
kiruha писал(а) 28. Июля 2008 :: 12:37:
УстКлючПорядка("MDID,PARENTVAL,CHILD_DATE_TIME_IDDOC");

?

Не совсем понял. Это в случае установленных отборов? А если отбора еще нет?
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Cвой журнал с множественным отбором....
Ответ #11 - 28. Июля 2008 :: 13:10
Печать  
Mikeware писал(а) 28. Июля 2008 :: 12:41:
kiruha писал(а) 28. Июля 2008 :: 12:37:
УстКлючПорядка("MDID,PARENTVAL,CHILD_DATE_TIME_IDDOC");

?

Не совсем понял. Это в случае установленных отборов? А если отбора еще нет?


И FROM сделать из _1SCRDOC. В случае отбора по контрагенту.

Поставщик должен иметь возможность в случае когда табл поле запрашивает 10 строк обратится
к индексу и взять там 10 строк - а не перелопачивать всю таблицу.

Короче попробуй.

Без отборов стандартно индекс ACDATETIME, но лучше JOURNAL если доки в одном журнале
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #12 - 28. Июля 2008 :: 14:00
Печать  
kiruha писал(а) 28. Июля 2008 :: 13:10:
И FROM сделать из _1SCRDOC. В случае отбора по контрагенту.

Поставщик должен иметь возможность в случае когда табл поле запрашивает 10 строк обратится
к индексу и взять там 10 строк - а не перелопачивать всю таблицу.

Короче попробуй.

Без отборов стандартно индекс ACDATETIME, но лучше JOURNAL если доки в одном журнале

Отбор я, естественно, делаю по графе отбора. А если тборов еще нет?
Доки принадлежат разным  общим журналам, но включены в один дополнительный. Пробовал отбор по _1SCRDOC по иду этого журнала - по _1sjourn получается быстрее
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #13 - 29. Июля 2008 :: 04:46
Печать  
Mikeware писал(а) 28. Июля 2008 :: 10:30:
А в отдельную таблицу тоже довольно долго выбирается.
Ведь при обновлении туда надо будет перечитывать данные из журнала.
И что посоветуешь во временную  таблицу - журнал с выборкой по видам доков, а потом уже связывать с шапками? или связывать уже при отборе во временную таблицу?


Я имел ввиду, что надо завсти свою таблицу (не временную). И триггерами писать в нее необходимые для журнала данные. Типа общих реквизитов.
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #14 - 29. Июля 2008 :: 05:08
Печать  
sadovnikov писал(а) 29. Июля 2008 :: 04:46:
Я имел ввиду, что надо завсти свою таблицу (не временную). И триггерами писать в нее необходимые для журнала данные. Типа общих реквизитов.

вариант.  Правда, имхо, избыточный... Плодим новые сущности.
И тем не менее, доп журнал 1С работает-то весьма быстро. Правда, в нем отборов нет. Я его попытался попрофилировать - создает курсор по _1SCRDOC, но так и не отловил, как он связывает с реквизитами и графами
Хочу такой же, только с отборами Улыбка
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #15 - 29. Июля 2008 :: 06:55
Печать  
Mikeware писал(а) 29. Июля 2008 :: 05:08:
Правда, имхо, избыточный... Плодим новые сущности.

Зуб за два даю, что ты слышал такое понятие, как "денормализация". Улыбка
И что ее тоже иногда полезно пользоваться.
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #16 - 29. Июля 2008 :: 07:29
Печать  
sadovnikov писал(а) 29. Июля 2008 :: 06:55:
Зуб за два даю, что ты слышал такое понятие, как "денормализация". Улыбка
И что ее тоже иногда полезно пользоваться.

Слышал Улыбка  Но стараюсь не пользоваться.
Да и ведь 1с-овский журнал быстро работает. почему?
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #17 - 29. Июля 2008 :: 08:35
Печать  
Mikeware писал(а) 29. Июля 2008 :: 07:29:
Слышал Улыбка  Но стараюсь не пользоваться.

Зря. Иногда незаменимая вещь. Главное - не переборщить.

Mikeware писал(а) 29. Июля 2008 :: 07:29:
Да и ведь 1с-овский журнал быстро работает. почему?

Ключевое слово - индексы...
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #18 - 30. Июля 2008 :: 06:35
Печать  
sadovnikov писал(а) 29. Июля 2008 :: 08:35:
Ключевое слово - индексы...

Курил и индексы.
1с штатно открывает журнал, создавая курсор. Этот же селект в QA работает 5 секунд, а штатный журнал открывается практически мгновенно.
зы. вот сам запрос, которым 1с генрит курсор
Код
Выбрать все
Select
  JOURN.* from _1SJOURN JOURN(NOLOCK INDEX=ACDATETIME), _1SCRDOC CRDOC(NOLOCK INDEX=PARENT)
where
  JOURN.DATE_TIME_IDDOC=CRDOC.CHILD_DATE_TIME_IDDOC and
  CRDOC.MDID=@P1 and
  CRDOC.PARENTVAL=@P2 and
  CRDOC.CHILD_DATE_TIME_IDDOC>=@P3 and
  CRDOC.CHILD_DATE_TIME_IDDOC<=@P4
order by
  CRDOC.MDID, CRDOC.PARENTVAL, CRDOC.CHILD_DATE_TIME_IDDOC
 


где @P1 - ид графы, @P2 - 'U', @P3 - нач. дата, @P4- кон. дата
  
Наверх
ICQ  
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #19 - 30. Июля 2008 :: 11:19
Печать  
Может все-таки кто-нибудь пояснит, почему создание курсора из 1С (а также многочисленный вызов хранимок типа sp_scXXX_byID - т.е. то, что делает 1С при открытии журнала) быстрее запроса?
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #20 - 30. Июля 2008 :: 11:38
Печать  
Ключ порядка четко в индекс попадает?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #21 - 30. Июля 2008 :: 14:54
Печать  
Mikeware писал(а) 30. Июля 2008 :: 11:19:
Может все-таки кто-нибудь пояснит, почему создание курсора из 1С (а также многочисленный вызов хранимок типа sp_scXXX_byID - т.е. то, что делает 1С при открытии журнала) быстрее запроса?

Для начала добавь в этот запрос top N, а потом сравнивай.
N - количество видимых строк журнала при открытии
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #22 - 30. Июля 2008 :: 15:01
Печать  
+
а так же, раз уж залез в профайлер, мог бы посмотреть сумму reads на подготовку+фитч курсора при открытии журнала и reads твоего запроса из #10.
И подумать почему такое отличие.
  

1&&2&&3
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #23 - 31. Июля 2008 :: 04:39
Печать  
trad писал(а) 30. Июля 2008 :: 14:54:
Для начала добавь в этот запрос top N, а потом сравнивай.
N - количество видимых строк журнала при открытии


+ причем, в раздел Order By добавь то, что писал в УстКлючПорядка.
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #24 - 31. Июля 2008 :: 04:42
Печать  
sadovnikov писал(а) 30. Июля 2008 :: 11:38:
Ключ порядка четко в индекс попадает?
Да я не в табполе делаю - в квери аналайзере экспериментирую. Поэтому ключ порядка не при чем.
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Cвой журнал с множественным отбором....
Ответ #25 - 31. Июля 2008 :: 04:44
Печать  
Mikeware писал(а) 31. Июля 2008 :: 04:42:
Да я не в табполе делаю - в квери аналайзере экспериментирую. Поэтому ключ порядка не при чем.

Юморист... Улыбка
Перечитай несколько постов выше.
  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #26 - 31. Июля 2008 :: 04:48
Печать  
trad писал(а) 30. Июля 2008 :: 14:54:
Для начала добавь в этот запрос top N, а потом сравнивай.
N - количество видимых строк журнала при открытии

Разве курсор не выбирает сразу все требуемые записи? (а потом 1С через fetch выбирает из курсора  только N требуемых для отображения)
количество reads сравню, подумаю...
Но все-таки я говорю про то, что один и тот же запрос, котрым 1С генерит курсор выполняется в QA гораздо медленнее. Не может столько времени тратиться на вывод результатов (имхо, конечно)...
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #27 - 31. Июля 2008 :: 05:07
Печать  
Mikeware писал(а) 31. Июля 2008 :: 04:48:
Разве курсор не выбирает сразу все требуемые записи?
Зависит от запроса. В данном случае не выбирает.

Mikeware писал(а) 31. Июля 2008 :: 04:48:
Но все-таки я говорю про то, что один и тот же запрос, котрым 1С генерит курсор выполняется в QA гораздо медленнее. Не может столько времени тратиться на вывод результатов (имхо, конечно)...
А я даже и не говорю про вывод (хотя передача от сервера клиенту всех данных разом и вывод их тоже требует времени). Я говорю про физическое чтение данных.
  

1&&2&&3
Наверх
 
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #28 - 31. Июля 2008 :: 06:22
Печать  
Mikeware писал(а) 30. Июля 2008 :: 11:19:
Может все-таки кто-нибудь пояснит, почему создание курсора из 1С (а также многочисленный вызов хранимок типа sp_scXXX_byID - т.е. то, что делает 1С при открытии журнала) быстрее запроса?

Потому что, то что выбрает курсор (именно выбирает, а не выбрал) - сразу не подгружается в таблицу журнала. Видишь ты на экране максимум строк 50, а вывод этого количества строк из курсора (как и из запроса) - дело сотых долей секунды. Даже если для каждой видимой записи выбирать значения реквизитов документа с помощью sp_scXXX_byID.
Если попытаешься выбрать весь набор записей с начала, то курсором будет однозначно медленнее, чем запросом. Хотя если тебе требуется получить сначала несколько последних записей, а потом уже весь набор данных, то курсором однозначно будет быстрее.
Еще, для понимания, как 1С выводит различные формы списков, посмотри на полосу прокрутки - она всегда посередине, т.е. заведомо неизвестно сколько строк в отображаемой информации, поэтому ты видишь только ту часть, которую видишь, а не манипулируешь всем журналом сразу.
Теперь понятно, почему якобы создание курсора из 1С... быстрее запроса?

Если я не прав - поправьте меня.  Подмигивание
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #29 - 31. Июля 2008 :: 07:03
Печать  
т.е. когда я открываю курсор - он данных не выбирает, данные выбираются при каждом фетче из курсора??
зы. соори за тупость.
  
Наверх
ICQ  
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #30 - 31. Июля 2008 :: 07:19
Печать  
Всё зависит от типа курсора.
Для динамического - SQL "для себя" продолжает строить "план" таблицы, но возвращает только те  данные, которые ты у него попросишь фетчем.
Для статического (и его разновидностей) - происходит полная выборка (как и обычным запросом). Плюс его (перед запросом) только в том, что ты можешь получить, к примеру, 100 строк начиная с 2500 строки.
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Cвой журнал с множественным отбором....
Ответ #31 - 31. Июля 2008 :: 07:52
Печать  
Понял. Получается, что 1с формирует динамический курсор.
Осталось придумать, как из табличного поля это примениить
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать