Переключение на Главную Страницу Страницы: 1 ... 3 4 [5]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Выгрузка из ТЗ во временную таблицу (курсор) (число прочтений - 22519 )
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выгрузка из ТЗ во временную таблицу (курсор)
Ответ #60 - 21. Октября 2007 :: 05:03
Печать  
Uzhast писал(а) 20. Октября 2007 :: 19:13:
spock, а твои изменения для подготовленных запросов уже в репе есть?

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



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Выгрузка из ТЗ во временную таблицу (курсор)
Ответ #61 - 21. Октября 2007 :: 05:30
Печать  
spock писал(а) 21. Октября 2007 :: 05:03:
Uzhast писал(а) 20. Октября 2007 :: 19:13:
spock, а твои изменения для подготовленных запросов уже в репе есть?

да

Поздно. Уже нашел. Улыбка
Но подготовленные запросы не понадобились. Выкрутился вот таким крокодилом:
Код
Выбрать все
	m_Formatter << "EXECSCRIPT ('IDS = \"\"\r"
		"FOR Rec = 1 TO " << nRowsCount   << "\r" <<
		"IF EOF ()\r"
		"	EXIT\r"
		"ENDIF\r"
		"IF BOF ()\r"
		"	EXIT\r"
		"ENDIF\r"
		"IF Rec > 1\r"
		"	IDS = IDS + \",\" + [\"] + " << m_KeyFieldName << " + [\"]\r"
		"ELSE\r"
		"	IDS = IDS + [\"] + " << m_KeyFieldName << " + [\"]\r"
		"ENDIF"
		"\r"
		"\r"
		"	SKIP " << Step << "\r"
		"ENDFOR\r"
		"\r"
		"RETURN IDS\r"
		"')";

 



Что в переводе означает:
Код
Выбрать все
	EXECSCRIPT ('
		IDS = ""
		FOR Rec = 1 TO nRowsCount
		IF EOF ()
			EXIT
		ENDIF
		IF BOF ()
			EXIT
		ENDIF
		IF Rec > 1
			IDS = IDS + "," + ["] + m_KeyFieldName + ["]
		ELSE
			IDS = IDS + ["] + m_KeyFieldName + ["]
		ENDIF

			SKIP Step
		ENDFOR

		RETURN IDS
	')

 



Стало гораздо шустрее - при непрерывном пейдждауне загрузка процессора в пике - 70%. Обычно 50-60. Вообще-то, это, конечно, многовато (такие задачи процессор вообще не должны грузить), но,  думаю, сойдет.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Выгрузка из ТЗ во временную таблицу (курсор)
Ответ #62 - 21. Октября 2007 :: 09:07
Печать  
Вообще то длинные строки - очень тормознутая вещь.
Точнее - по мере роста строк производительность падает эспоненциально.

Лучше в структуированный объект (ТЗ, курсор и т.п.), либо небольшими порциями(хуже) .
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Выгрузка из ТЗ во временную таблицу (курсор)
Ответ #63 - 21. Октября 2007 :: 15:14
Печать  
kiruha писал(а) 21. Октября 2007 :: 09:07:
Вообще то длинные строки - очень тормознутая вещь.

Ни хрена они не тормознутые  Смех У нас тут провайдер или хде? Тут количество ИДшников - десятка два от силы. Строка получается символов 200-250 максимум. Так что на "длинные строки" эта хреновина не тянет  Смех
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 
ОтправитьПечать