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.
