Following with my tests with NH profiler (what a wonderful tool) I
noticed that Nhibernate profiler shows lots of error messages about
the query plan:

Different parameter sizes result in inefficient query plan cache usage

It also leads you to an explanation in 
http://nhprof.com/Learn/Alerts/UncachedQueryPlan
and warns you about the use of prepare_sql = true parameter when
building session. I do it that way with fluent:

.ExposeConfiguration(configuration => configuration
    .SetProperty("current_session_context_class", "thread_static")
    .SetProperty("prepare_sql", "true")
    .SetProperty("generate_statistics", "true")
    )

But it seems that it isn't working as error messages are still there.
Is that a limitation on OracleClientConfiguration or am I doing it
wrong?


To provide with some more information about this... In my repository I
do this

session.Query<TEntity>.Where(predicate).ToList();
and this is the call

var value = ParameterRepository.First(p => (p.Pipeline.Id ==
pipelineId && p.Name == name));
For instance those are two SQL generated from this call and that
nhibernate profiler shows as "DIfferent parameter sizes result in
inefficient query plan cache usage"

select GUID1_12_,
       PARAMETER2_12_,
       PARAMETER3_12_,
       GUID4_12_
from   (select pipelineex0_.GUID_PIPELINE_EXEC_PARAMETER as GUID1_12_,
               pipelineex0_.PARAMETER_NAME               as
PARAMETER2_12_,
               pipelineex0_.PARAMETER_VALUE              as
PARAMETER3_12_,
               pipelineex0_.GUID_PIPELINE_TRACKING       as GUID4_12_
        from   FCT_PIPELINE_EXEC_PARAMETER pipelineex0_
        where  pipelineex0_.GUID_PIPELINE_TRACKING =
'A5916E73CF1E406DA26F65C24BFBF694' /* :p0 */
               and pipelineex0_.PARAMETER_NAME = 'lid' /* :p1 */)
where  rownum <= 1 /* :p2 */
and second

select GUID1_12_,
       PARAMETER2_12_,
       PARAMETER3_12_,
       GUID4_12_
from   (select pipelineex0_.GUID_PIPELINE_EXEC_PARAMETER as GUID1_12_,
               pipelineex0_.PARAMETER_NAME               as
PARAMETER2_12_,
               pipelineex0_.PARAMETER_VALUE              as
PARAMETER3_12_,
               pipelineex0_.GUID_PIPELINE_TRACKING       as GUID4_12_
        from   FCT_PIPELINE_EXEC_PARAMETER pipelineex0_
        where  pipelineex0_.GUID_PIPELINE_TRACKING =
'A5916E73CF1E406DA26F65C24BFBF694' /* :p0 */
               and pipelineex0_.PARAMETER_NAME = 'period' /* :p1 */)
where  rownum <= 1 /* :p2 */

IMHO is this PARAMETER_NAME with 'lid' and 'period' that is generating
different query plans.

thanks in advance

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to