sqlsugar 生成的sql语句,变量 类型 为nvarchar,查询性能有很大的提升空间..... 返回

求助
3 543
该叫什么 Kevin 发布于2019/8/31
悬赏:5 飞吻
List<IConditionalModel> conModels = new List<IConditionalModel>();
string dts="2019-01-01",dte="2019-12-31"

 if (!string.IsNullOrEmpty(dts)) { conModels.Add(new ConditionalModel() { FieldName = "FindTime", ConditionalType = ConditionalType.GreaterThanOrEqual, FieldValue = dts }); }

if (!string.IsNullOrEmpty(dte))

                        {

                            dte = DateTime.Parse(dte).AddDays(1).ToString("yyyy-MM-dd");

                            conModels.Add(new ConditionalModel() { FieldName = "FindTime", ConditionalType = ConditionalType.LessThan, FieldValue = dte });

                        }


最后使用这样的查询生成的sql语句,这个nvarchar如果改为 varchar 那么sql执行 50多毫秒,nvarchar 约7秒,即使不用ConditionalModel直接使用where lamda语句生成的sql也是类似

LYVG7[02J$B@KSU%0PH%6_I.png

这似乎生成sql性能太不理想了吧,原来觉得ef查询慢,现在这个....不知道能不能改善下

热忱回答3

  • 我会和你说mysql只有varchar么

    0 回复
  • ConditionalModel 里面有个转换委托属性,你转换成时间类型就可以

    0 回复
  • FieldName = "id", FieldValueConvertFunc=it=>Convert.ToDateTime(it)

    0 回复

版块

学习文档

最新会员

发布达人

回贴达人