|
![]() |
#1 |
Участник
|
2 Владимир Максимов
Во-первых, эти хинты зависят от сервера б/д Во-вторых, от параметра CashLookup таблицы Для MS SQL; CashLookup - EntireTable При первом обращении на сервер отправляется запрос с хинтом OPTION(FAST n) (n - зависит от таблицы) и после этого записи фетчатся порциями по n, пока не будет закачана вся таблица (и для firstonly и для firstfast). При повтороном обрущении данные берутся из кэша MS SQL; другие значения CashLookup Для хинта firstonly На сервер отправляется запрос с хинтом OPTION(FAST 2), после этого фетчится две записи и курсор закрывается Для хинта firstfast На сервер отправляется запрос с хинтом OPTION(FAST 1) и после этого фетчится n записей (n - зависит от таблицы). Если записи перебирать в цикле, то при выборе n+1 записи на сервер посылается запрос на фетч еще n записей и т.д. Для совместного использования хинтов firstonly и firstfast На сервер отправляется запрос с хинтом OPTION(FAST 1) и после этого фетчится две записи и курсор закрывается Если не использовать хинты] На сервер отправляется запрос с хинтом OPTION(FAST n) и после этого фетчится n записей (n - зависит от таблицы). Если записи перебирать в цикле, то при выборе n+1 записи на сервер посылается запрос на фетч еще n записей и т.д. Для Oracle примерно то-же самое, отличие вот в чем: для EntireTable и если не указаны хинты посылается запрос как есть, для остальных значений CashLookup - хинт /*+ FIRST_ROWS */ (и для firstonly и firstfast). 2NetBus Отвечая на первоначальный вопрос Для MS SQL использование совместно этих хинтов принципиального выигрыша в быстродействии не даст. При выборке больше чем одной записи - зависит от параметра n, т.е. от таблицы. Для Oracle совместное использование хинтов ничего не даст. В остальном -зависит от настройки оптимизатора, т.е. от параметра OPTIMIZER_MODE сервера или OPTIMIZER_GOAL сессии
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: alex55 (1). |