| 
			
			 | 
		#21 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			если скопировать запрос как есть из мониторинга и выполнить его через Management Studio - также долго?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#22 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
А вы отвечаете "думаю, что..." Повторяю еще раз: ЗАМЕРЬТЕ.  | 
| 
	
 | 
| 
			
			 | 
		#23 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Что такое Management Studio ?! 
				__________________ 
		
		
		
		
	PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда.  | 
| 
	
 | 
| 
			
			 | 
		#25 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Что мне реально может дать этот софт?! Показания Enterprise Managere не достаточно?! 
		
		
		
		
		
		
			Включил этот же код в качестве прямого запроса отработал за 15 сек 
				__________________ 
		
		
		
		
		
			PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда. Последний раз редактировалось 3oppo; 25.06.2007 в 13:55.  | 
| 
	
 | 
| 
			
			 | 
		#26 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ничего не даст -  это просто ответ на Ваш вопрос "Что такое Management Studio ?!".  
		
		
		
		
		
		
		
	Просто в SQL 2005 -- это штатная штука того же назначения что и EM в 2000. Честно говоря, не знаю, что дальше делать. Может попробовать потрассировать ход выполнения запроса при помощи profiler. Или попробовать выполнить запрос при помощи connection (может быть что-то роется в настройках соединения)  | 
| 
	
 | 
| 
			
			 | 
		#27 | 
| 
			
			 Member 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Включите мониторинг длинных запросов. Посмотрите, действительно ли этот злополучный запрос так долго отрабатывает именно в Аксапте. Запустите профайлер кода, в конце концов. Убедитесь, что время уходит именно на запрос. 
				__________________ 
		
		
		
		
	С уважением, glibs®  | 
| 
	
 | 
| 
			
			 | 
		#28 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#29 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На количестве запросов отразилось, я же написал запрос всё таки один. (Там хитро запускался простой select) Но выполняется очень медленно. С простым инкрементом вместо кода. 
		
		
		
		
		
		
			Цитата: 
	
Что есть время выполнения запроса?! Это время до выхода из полного цикла, или это время до попадания внутрь цикла? Обратил внимание на такую вещь: При АКСАПТАВСКОМ запросе, попадание внутрь цикла происходит быстро ( 5 сек), НО само прохождение по циклу идёт очень медленно, хотя внутри выполняется только i++; При прямом запросе, и попадение внутрь цикла и сам цикл (с кодом i++) делаются очень быстро. Может это как то, кому то, прояснит ситуацию!? 
				__________________ 
		
		
		
		
	PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда.  | 
| 
	
 | 
| 
			
			 | 
		#30 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А что это за "прямой запрос"? 
		
		
		
		
		
		
			Приведите его. PS. Есть подозрение, что это происходит из-за сортировки. Уберите index из запроса. 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#31 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			пробуйте указать в запросе используемые поля, т.к. может быть все дело в объеме перекачиваемых данных 
		
		
		
		
		
		
		
	ПС попадание внутрь цикла и есть исполнение запроса  | 
| 
	
 | 
| 
			
			 | 
		#32 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И еще - замените первый join на exists join - у вас на каждую проводку для одной и той же номенклатуры возвращается сторока. За счет этого может быть много "холостых" прогонов цикла
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#33 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как это?! 
		
		
		
		
		
		
			X++: odbc = new ODBCConnection(lp); statement = odbc.createStatement(); ip4 = NoYes::Yes; ip2 = RAssetTransType::Acquisition; ip3 = VGP_LedgerLinkModuleRef::RAsset; select it; queryText = strfmt( "SELECT * FROM RASSETTABLE" + "FROM vgp_sql.RASSETTABLE A INNER JOIN" + " vgp_sql.RASSETTRANS B ON A.ACCOUNTNUM = B.ACCOUNTNUM INNER JOIN" + " dbo.LEDGERTRANS C ON B.VGP_LEDGERLINKID = C.VGP_LEDGERLINKID AND B.VOUCHER = C.VOUCHER AND" + " B.TRANSDATE = C.TRANSDATE" + " WHERE (A.DATAAREAID = 'vgp') AND (A.VGP_PROPERTYTAX = %4) AND (B.DATAAREAID = 'vgp') AND (B.ASSETTRANSTYPE = %2) AND" + " (B.TRANSDATE <= CONVERT(DATETIME, %1, 102)) AND (C.DATAAREAID = 'vgp') AND (C.VGP_LEDGERLINKMODULEREF = %3)" + " ORDER BY A.DATAAREAID, A.ACCOUNTNUM, B.DATAAREAID, B.ACCOUNTNUM, B.ASSETTRANSTYPE, C.DATAAREAID, C.VGP_LEDGERLINKID," + " C.VGP_LEDGERLINKMODULEREF OPTION (FAST 4)" , date2str( reportDateEnd,321,2,4,2,4,4), ip2, ip3, ip4, CurExt() ); odbc.ttsbegin(); res = statement.executeQuery(queryText); while(res.next()) { i++; } Цитата: 
	
 
		
				__________________ 
		
		
		
		
		
			PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда. Последний раз редактировалось 3oppo; 25.06.2007 в 15:03.  | 
| 
	
 | 
| 
			
			 | 
		#34 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
  PS. Наберут студентов по объявлению... .. .  
		
				__________________ 
		
		
		
		
	PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда.  | 
| 
	
 | 
| 
			
			 | 
		#35 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Но мне нужны все поля!!! 
				__________________ 
		
		
		
		
	PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда.  | 
| 
	
 | 
| 
			
			 | 
		#36 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а если в прямом запросе прокачать все поля через ODBC, останется ли он после этого быстрее встроенного?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#37 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#38 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от 3oppo
			 
 
			X++: odbc = new ODBCConnection(lp); statement = odbc.createStatement(); ip4 = NoYes::Yes; ip2 = RAssetTransType::Acquisition; ip3 = VGP_LedgerLinkModuleRef::RAsset; select it; queryText = strfmt( "SELECT * FROM RASSETTABLE" + "FROM vgp_sql.RASSETTABLE A INNER JOIN" + " vgp_sql.RASSETTRANS B ON A.ACCOUNTNUM = B.ACCOUNTNUM INNER JOIN" + " dbo.LEDGERTRANS C ON B.VGP_LEDGERLINKID = C.VGP_LEDGERLINKID AND B.VOUCHER = C.VOUCHER AND" + " B.TRANSDATE = C.TRANSDATE" + " WHERE (A.DATAAREAID = 'vgp') AND (A.VGP_PROPERTYTAX = %4) AND (B.DATAAREAID = 'vgp') AND (B.ASSETTRANSTYPE = %2) AND" + " (B.TRANSDATE <= CONVERT(DATETIME, %1, 102)) AND (C.DATAAREAID = 'vgp') AND (C.VGP_LEDGERLINKMODULEREF = %3)" + " ORDER BY A.DATAAREAID, A.ACCOUNTNUM, B.DATAAREAID, B.ACCOUNTNUM, B.ASSETTRANSTYPE, C.DATAAREAID, C.VGP_LEDGERLINKID," + " C.VGP_LEDGERLINKMODULEREF OPTION (FAST 4)" , date2str( reportDateEnd,321,2,4,2,4,4), ip2, ip3, ip4, CurExt() ); odbc.ttsbegin(); res = statement.executeQuery(queryText); while(res.next()) { i++; } У этого запроса даже синтаксис неправильный.  | 
| 
	
 | 
| 
			
			 | 
		#39 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#40 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			после res.next пройтись по всем полям в res.metadata и вызвать для каждого res.getString. 
		
		
		
		
		
		
		
	Ещенарушена чистота жксперимента использован ODBCConnection вместо Connection  | 
| 
	
 | 
| Теги | 
| производительность, запрос (query), ax3.0 | 
| 
	
	 | 
	
		
		
  |