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.
