The mssql driver has code to set the parameter size on string
parameters. Perhaps nhibernate's oracle driver doesn't do this at the
moment, and perhaps it should?

/Oskar


2012/3/20 guilemsola <[email protected]>:
> 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.
>

-- 
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