Переключение на Главную Страницу Страницы: 1 [2] 3 4 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) Сравнение с методом ВыбратьПоЗначению(...) (число прочтений - 13982 )
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #15 - 23. Марта 2009 :: 10:02
Печать  
вообще, изначально идея была такой:
в журнале документов в текстовом поле показать, была ли отгрузка по счету и было желание ускориться при помощи прямых запросов.

поскольку параметризированный в dbf не работает, то видимо переплюнуть ВыбратьПоЗначению все таки не удасться.
Потом стало интересно хотя бы прийти к подобному времени.

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


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #16 - 23. Марта 2009 :: 10:06
Печать  
да, кстати, замер ВыбратьПоЗначению производится
вместе со всеми получить;

а замер запросов - с проверкой, есть ли в результирующей таблице строки, т.е. еще строка

ЕстьДоки=?(табЗапроса.Количество.Строк()>0,1,0);


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


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #17 - 23. Марта 2009 :: 10:15
Печать  
Код
Выбрать все
select
Отбор.CHILDID
from 1scrdoc Отбор
where
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME+Отбор.CHILDID BETWEEN
    ' CR5'+'B1  34   30HП	    '+DTOS({d '2009-03-23'})+'		   '
and ' CR5'+'B1  34   30HП	    '+DTOS({d '2009-03-23'})+'ZZZZZZZZZZZZZZZ'

 



сия конструкция выполнялась порядка 560 мс

выбратьпозначению (вместе с ПолучитьДокумент()), проверкой его вида, проведенности - меньше 100 мс

при том, что в методе было задано так:

ДокОбщ.ВыбратьПоЗначению(,,"Договор",Договор);
т.е. без ограничения по датам

(имеется в виду 197 вызовов метода и выполнения запроса)

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


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #18 - 23. Марта 2009 :: 10:20
Печать  
в общем, всех запарил с этим dbf-ом (
  
Наверх
ICQ  
IP записан
 
Igor-bts
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 103
Зарегистрирован: 14. Июля 2006
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #19 - 23. Марта 2009 :: 10:50
Печать  
select
Отбор.CHILDID TOP 1
from 1scrdoc Отбор
where
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME+Отбор.CHILDID BETWEEN
    ' CR5'+'B1  34   30HП          '+DTOS({d '2009-03-23'})+'               '
and ' CR5'+'B1  34   30HП          '+DTOS({d '2009-03-23'})+'ZZZZZZZZZZZZZZZ'

Быстрей не будет?
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #20 - 23. Марта 2009 :: 10:52
Печать  
Ощущение, что индекс не работает.
Хз почему.

Цитата:
вообще, изначально идея была такой:
в журнале документов в текстовом поле показать, была ли отгрузка по счету и было желание ускориться при помощи прямых запросов.

ну это через подчиненные намного быстрее, а не через графу.
Или даже заводят спец спр для ускорения, если отображать надо в журнале



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


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #21 - 23. Марта 2009 :: 11:01
Печать  
Цитата:
ну это через подчиненные намного быстрее, а не через графу.
Или даже заводят спец спр для ускорения, если отображать надо в журнале


ну у меня типовая бухгалтерия; скажем так - не хочу ее менять сильно.
а там у документа Счет нет подчиненных документов.
в ней вообще как то с подчиненными плохо, в типовой БУ
связывается все по договорам

Цитата:
select
Отбор.CHILDID TOP 1
...


пробовал; тоже не особо ускорило
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #22 - 23. Марта 2009 :: 11:04
Печать  
Цитата:
Ощущение, что индекс не работает.
Хз почему.


может быть со строкой подключения еще поиграть...

  
Наверх
ICQ  
IP записан
 
Igor-bts
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 103
Зарегистрирован: 14. Июля 2006
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #23 - 23. Марта 2009 :: 12:36
Печать  
еще вариант
попробовать избавится от betwin на ">" "<"
удалить DTOS

Отбор.MDID = ' CR5' AND Отбор.PARENTVAL = 'B1  34   30HП          ' AND Отбор.CHILDDATE+Отбор.CHILDTIME+Отбор.CHILDID >=
DTOS({d '2009-03-23'})+'               ' and  Отбор.CHILDDATE+Отбор.CHILDTIME+Отбор.CHILDID <=DTOS({d '2009-03-23'})+'ZZZZZZZZZZZZZZZ'

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


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #24 - 23. Марта 2009 :: 13:04
Печать  
Igor-bts писал(а) 23. Марта 2009 :: 12:36:
еще вариант
попробовать избавится от betwin на ">" "<"
удалить DTOS

Отбор.MDID = ' CR5' AND Отбор.PARENTVAL = 'B1  34   30HП          ' AND Отбор.CHILDDATE+Отбор.CHILDTIME+Отбор.CHILDID >=
DTOS({d '2009-03-23'})+'               ' and  Отбор.CHILDDATE+Отбор.CHILDTIME+Отбор.CHILDID <=DTOS({d '2009-03-23'})+'ZZZZZZZZZZZZZZZ'




так мы точно играем мимо индекса
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #25 - 23. Марта 2009 :: 13:05
Печать  
а вот избавиться от between  - это идея.
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #26 - 23. Марта 2009 :: 13:13
Печать  
да, интересно, если
а)
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME+Отбор.CHILDID
б)
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME
(мимо)

будут ли отличия по времени?
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #27 - 23. Марта 2009 :: 13:14
Печать  
Код
Выбрать все
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME+Отбор.CHILDID >=
 $ГрафаОтбора.Договор+:ДлинныйДоговор+DTOS(:НачДата~~)+'"+_Стр111+"'
and Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME+Отбор.CHILDID <=
$ГрафаОтбора.Договор+:ДлинныйДоговор+DTOS(:НачДата~~)+'"+_Стр222+"'

 



без between - тоже самое; м. только замедлилось еще чуток
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #28 - 23. Марта 2009 :: 13:16
Печать  
kiruha писал(а) 23. Марта 2009 :: 13:13:
да, интересно, если
а)
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME+Отбор.CHILDID
б)
Отбор.MDID+Отбор.PARENTVAL+DTOS(Отбор.CHILDDATE)+Отбор.CHILDTIME
(мимо)

будут ли отличия по времени?


в том то и дело, что отличия то есть - если писать точно индексное выражение - то все работает несколько быстрее; примерно ускоряется раза в 2 максимум
  
Наверх
ICQ  
IP записан
 
Igor-bts
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 103
Зарегистрирован: 14. Июля 2006
Re: Сравнение с методом ВыбратьПоЗначению(...)
Ответ #29 - 23. Марта 2009 :: 13:22
Печать  
Есть еще одна мысль для чего делать: DTOS(Отбор.CHILDDATE) можно ли его заменить на Отбор.CHILDDATE? По идее в этот момент мы конвертируем дату в строку, лишнее преобразование и, возможно, не попадаем в индекс.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 5
ОтправитьПечать