Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрос из 1С к SQL не 1С. (число прочтений - 12258 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос из 1С к SQL не 1С.
Ответ #30 - 29. Января 2007 :: 09:01
Печать  
Т.е. 34 минуты занимает именно передача данных???
1CPP тут уже не виновата, это драйвер ODBC. Или у тебя сервер по 19200 подключен через компорт? Подмигивание
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос из 1С к SQL не 1С.
Ответ #31 - 29. Января 2007 :: 09:02
Печать  
имхо, создать индексы и юзать "ТЗSQL = ЛокODBC.ВыполнитьИнструкцию(Запрос, , 1);". еще лучше было бы использовать ms sql server вместо interbase.
  
Наверх
IP записан
 
KARLSON
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 27. Января 2007
Re: Запрос из 1С к SQL не 1С.
Ответ #32 - 29. Января 2007 :: 09:05
Печать  
Кстати из Фака на sql.ru цитата:

Оказывается, при выполнении запроса сервер выдает записи клиенту (приложению) по очереди и по одной записи. Причем только "сверху вниз". Как только записи на сервере кончились, сервер сообщает клиенту об этом сигналом EOF вместо выдачи очередной записи. Конечно, в некоторых современных серверах есть произвольное позиционирование и проход по выборке не только сверху вниз но и в обратном порядке, но это требует от сервера достаточно больших ресурсов.

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


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 27. Января 2007
Re: Запрос из 1С к SQL не 1С.
Ответ #33 - 29. Января 2007 :: 09:06
Печать  
Цитата:
имхо, создать индексы и юзать "ТЗSQL = ЛокODBC.ВыполнитьИнструкцию(Запрос, , 1);". еще лучше было бы использовать ms sql server вместо interbase.


Драйверами для SQL, Firebird база не открывается. И я не могу править базу на FireBird....
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Запрос из 1С к SQL не 1С.
Ответ #34 - 29. Января 2007 :: 09:10
Печать  
KARLSON писал(а) 29. Января 2007 :: 09:06:
Цитата:
имхо, создать индексы и юзать "ТЗSQL = ЛокODBC.ВыполнитьИнструкцию(Запрос, , 1);". еще лучше было бы использовать ms sql server вместо interbase.


Драйверами для SQL, Firebird база не открывается. И я не могу править базу на FireBird....


я не про драйверы, я про серверы
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос из 1С к SQL не 1С.
Ответ #35 - 29. Января 2007 :: 09:11
Печать  
1. Перечисли индекы. Как их смотреть - погугли.
2. Используй ТОЛЬКО выполнитьинструкцию()

Время выполнения такого запроса с правильно расставленными индексами с получением данных на клиента несколько секунд.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос из 1С к SQL не 1С.
Ответ #36 - 29. Января 2007 :: 09:12
Печать  
KARLSON писал(а) 29. Января 2007 :: 09:05:
Кстати из Фака на sql.ru цитата:

Оказывается, при выполнении запроса сервер выдает записи клиенту (приложению) по очереди и по одной записи. Причем только "сверху вниз". Как только записи на сервере кончились, сервер сообщает клиенту об этом сигналом EOF вместо выдачи очередной записи. Конечно, в некоторых современных серверах есть произвольное позиционирование и проход по выборке не только сверху вниз но и в обратном порядке, но это требует от сервера достаточно больших ресурсов.


Очереденость данных задают индексы. Так что как ни крути тебе придется учить мат.часть  Смех
  
Наверх
 
IP записан
 
KARLSON
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 27. Января 2007
Re: Запрос из 1С к SQL не 1С.
Ответ #37 - 29. Января 2007 :: 09:18
Печать  
Arta писал(а) 29. Января 2007 :: 09:12:
KARLSON писал(а) 29. Января 2007 :: 09:05:
Кстати из Фака на sql.ru цитата:

Оказывается, при выполнении запроса сервер выдает записи клиенту (приложению) по очереди и по одной записи. Причем только "сверху вниз". Как только записи на сервере кончились, сервер сообщает клиенту об этом сигналом EOF вместо выдачи очередной записи. Конечно, в некоторых современных серверах есть произвольное позиционирование и проход по выборке не только сверху вниз но и в обратном порядке, но это требует от сервера достаточно больших ресурсов.


Очереденость данных задают индексы. Так что как ни крути тебе придется учить мат.часть  Смех


Я написал про принцип работы BDE или ODBC... Цитата отсюда:
http://www.ibase.ru/devinfo/bde.htm
  
Наверх
 
IP записан
 
KARLSON
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 27. Января 2007
Re: Запрос из 1С к SQL не 1С.
Ответ #38 - 29. Января 2007 :: 09:22
Печать  
Пошел учить мат часть...в IBExpert запрос делается не 19 секунд...
Если кто сможет помоч каким-нить советом буду очень благодарен. Т.к. сроки поджимают
  
Наверх
 
IP записан
 
RaiN
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 10
Зарегистрирован: 26. Января 2007
Re: Запрос из 1С к SQL не 1С.
Ответ #39 - 29. Января 2007 :: 09:32
Печать  
Arta писал(а) 29. Января 2007 :: 09:12:
KARLSON писал(а) 29. Января 2007 :: 09:05:
Кстати из Фака на sql.ru цитата:

Оказывается, при выполнении запроса сервер выдает записи клиенту (приложению) по очереди и по одной записи. Причем только "сверху вниз". Как только записи на сервере кончились, сервер сообщает клиенту об этом сигналом EOF вместо выдачи очередной записи. Конечно, в некоторых современных серверах есть произвольное позиционирование и проход по выборке не только сверху вниз но и в обратном порядке, но это требует от сервера достаточно больших ресурсов.


Очереденость данных задают индексы. Так что как ни крути тебе придется учить мат.часть  Смех


Без мат части, последний вариант, это скачать сторонний драйвер и попробовать с ним.

PS: Случайно сталкивался с профстроем. Если говорят что 1С тормозит, то Профстрой вообще не работает. Так что там, наверняка, проблема со структурой базы данных.
  
Наверх
 
IP записан
 
KARLSON
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 27. Января 2007
Re: Запрос из 1С к SQL не 1С.
Ответ #40 - 29. Января 2007 :: 10:36
Печать  
SELECT
    ARTIKLS.ANUMB AS ARTICLE_PROF,
    ARTSVST.ASKL1 AS ARTICLE_SKLAD,
    ARTSVST.ASKL2 AS ARTICLE_1C,
    ARTIKLS.ANAME AS NOMNAME,
    ARTSVST.CLPRV AS TARIF_ED_IZM,
    COLSLST.CNAME AS CVET_TEKSTURI,
    COLSLST.CNAMP AS CVET_ARTICLE,
    ARTSVST.CLPRC AS TARIF_OSN_TEKSTURI,
    ARTSVST.CLPR1 AS TARIF_VNUTR_TEKSTURI,
    ARTSVST.CLPR2 AS TARIF_VNESHN_TEKSTURI,
    ARTSVST.CLPRA AS TARIF_DVUHSTORONNEY_TEKSTURI,
    GRUPART.MNAME AS NOMGRUPNAME,
    GRUPART.MUNIC AS GRUPUNICNOMER,
    ARTIKLS.NUNIC AS KATEGORYUNICNOMER,
    ARTIKLS.APREF AS KATEGORY,
    ARTIKLS.ANAMP AS NOMNAMECONTR,
    CORRENC.CNAME AS VALUTE,
    CASE
       WHEN ARTIKLS.ATYPI = 1 THEN 'ïîã.ì.'
       WHEN ARTIKLS.ATYPI = 2 THEN 'ì.êâ.'
       WHEN ARTIKLS.ATYPI = 3 THEN 'øò'
       WHEN ARTIKLS.ATYPI = 5 THEN 'êîìïë.'
       ELSE 'íåèçâåñòíî'
    END AS ED_IZM

      FROM COLSLST
      RIGHT OUTER JOIN ARTSVST ON (COLSLST.CNUMB = ARTSVST.CLNUM)
      RIGHT OUTER JOIN ARTIKLS ON (ARTSVST.ANUMB = ARTIKLS.ANUMB)
      LEFT OUTER JOIN CORRENC ON (ARTIKLS.CNUMB = CORRENC.CNUMB)
    LEFT OUTER JOIN GRUPART ON (ARTIKLS.MUNIC = GRUPART.MPREF)


Plan
PLAN JOIN (JOIN (JOIN (ARTIKLS NATURAL,JOIN (ARTSVST NATURAL,COLSLST NATURAL)),CORRENC NATURAL),GRUPART INDEX (RDB$PRIMARY8))

Adapted Plan
PLAN JOIN (JOIN (JOIN (ARTIKLS NATURAL,JOIN (ARTSVST NATURAL,COLSLST NATURAL)),CORRENC NATURAL),GRUPART INDEX (IGRUPART))

------ Performance info ------
Prepare time = 0ms
Execute time = 19s 531ms
Avg fetch time = 1 085,06 ms
Current memory = 753 304
Max memory = 843 240
Memory buffers = 2 048
Reads from disk to cache = 859
Writes from cache to disk = 0
Fetches from cache = 30 923 245
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать