|  06.05.2011, 09:57 | #1 | 
| Возьми свет!!! | Когда строиться план запроса в query или в queryRun 
			
			В какой момент строиться план запроса, т.е. имеет ли какой либо смысл скажем для оптимизации хранить query а затем по нему просто вызывать конструктор queryRun при условии что ограничение на другие поля у меня не устанавливается, меняются только значения ограничений.  Насколько я помню query и queryRun это динамические запросы а план по ним не кэшируется? Я прав или нет? 
				__________________ Axapta 3.0 sp 5 Oracle  Я могу взорвать вам мозг!!! Последний раз редактировалось Murlin; 06.05.2011 в 10:02. | 
|  | 
|  06.05.2011, 10:08 | #2 | 
| Участник | |
|  | 
|  06.05.2011, 10:09 | #3 | 
| Участник | 
			
			строка sql-запроса отсылается на сервер в момент первого queryRun.next() по идее в этот же момент должен строится план запроса. но нужно учитывать эффекты кэширования планов запроса (кэширование делает SQL) аксапта по-умолчанию посылает запросы с плейсхолдерами"sql myfield from mytable where mytable.myfield = '%1'". если sql видит, что такой запрос уже выполнялся, то может использовать уже скомпилированный ранее план запроса. Последний раз редактировалось mazzy; 06.05.2011 в 10:46. Причина: тьфу, плейсхолдерами, конечно. | 
|  | 
|  06.05.2011, 10:42 | #4 | 
| Участник | 
			
			Аксапта и сама может компилировать запросы (насчет Oracle не знаю, но в MS SQL точно - с использвоанием sp_cursorprepexec), а потом использовать их повторно (sp_cursorexecute).  Вот только напрямую этим нельзя управлять. Ядро сам решает, когда это делать. Единственно, что можно - это обязательно использовать плейсхолдеры для циклических запросов 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2). | |
|  06.05.2011, 10:51 | #5 | 
| Участник | Цитата: Да и поведение по умолчанию может зависить от настроек PS Упс, уже исправил   
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  06.05.2011, 11:04 | #6 | 
| Moderator | Цитата: 
		
			Сообщение от AndyD
			   Аксапта и сама может компилировать запросы (насчет Oracle не знаю, но в MS SQL точно - с использвоанием sp_cursorprepexec), а потом использовать их повторно (sp_cursorexecute).  Вот только напрямую этим нельзя управлять. Ядро сам решает, когда это делать. Единственно, что можно - это обязательно использовать плейсхолдеры для циклических запросов | 
|  |