| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			При трассировке запросов, посылаемых Axapta на MS SQL Server, можно увидеть, что в конце запроса присутствует конструкция OPTION(FAST 20) либо OPTION(FAST 1). Кто-нибудь знает инструмент Axapta для управления добавлением/удалением этой инструкции.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Так Axapta передает ожидаемое количество строк, которые вернет запрос. У меня иногда бывает и FAST 60, например. 
		
		
		
		
		
		
			Управлять этим параметром можно в очень ограниченном объеме: если select передать firstfast, то на сервер уйдет FAST 1; firstonly у меня почему-то преобразуется в FAST 2. 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А каким образом получилось 60, Вы что-нибудь для этого делали?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я сделал запрос с LIKE (то есть запрос Axapta не сводила к Index Seek, а делала полный перебор) по таблице LedgerTable.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нюансов много.  Например, для простого SELECT TABLE1 значение для (FAST n) считается как Buffer size / длина записи 
		
		
		
		
		
		
		
	Buffer size - это параметр Buffer Size в Configuration Utility на закладке Database. В 2.5. и 3.0 значение по умолчанию - 24 Кб Длина записи - сумма длин ее полей Т.е. если создать таблицу TABLE1 с одним строковым полем длиной 1000 байт, запрос PHP код: 
	
			
	Изменим длину поля до 500 символов - получим OPTION(FAST 48) Как точно считается - учитывается ли длина системных полей, как округляется, как учитывается длина контейнерных полей, не выяснял, не вижу в этом смысла Для PHP код: 
	
			
	И т.д. и т.п. Идея, видимо, в том, чтобы максимально быстро получить первую пачку записей и отобразить ее в Grid-е. Кто, когда и как в Дамгарде рассчитал, что в среднестатистический Grid помещается 24Кб - тайна, покрытая мраком есть хороший документ от 2.5 про Cost-based optimizer и Databases Advanced от 3.0  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			> Databases Advanced от 3.0 
		
		
		
		
		
		
		
	имя файла и где лежит? Заранее благодарен.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Модератор 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 злыдень 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А есть ли возможность каким либо образом, программно, заставить аксапту отключить этот идиотский хинт OPTION() для определенного запроса??? 
		
		
		
		
		
		
			Через квериран или селект или ещё, хоть как ни-ть??? 
				__________________ 
		
		
		
		
	Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как отключить для одного запроса не знаю, но можно выключить и включить для всего соединения 
		
		
		
		
		
		
			X++: SqlSystem sqlSystem = new SqlSystem(); int hints; ; hints = SqlSystem::databaseHints(); SqlSystem::databaseHints(hints & 0xfffd); // ваш select или QueryRun SqlSystem::databaseHints(hints); 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от AndyD
			 
 
			Как отключить для одного запроса не знаю, но можно выключить и включить для всего соединения 
		
	X++: SqlSystem sqlSystem = new SqlSystem(); int hints; ; hints = SqlSystem::databaseHints(); SqlSystem::databaseHints(hints & 0xfffd); // ваш select или QueryRun SqlSystem::databaseHints(hints); При работе на клиенте - все равно, а вот если код исполняется на сервере приложения, то запуск такого кода из под одного пользователя не повляияет ли на работу других ?  | 
| 
	
 | 
| Теги | 
| databasehints, fast, option, sql | 
| 
	
	 | 
	
		
  |