使用sqlsugar的注意事項
var sqlpara = new List<SqlSugar.SugarParameter>();
sqlpara.Add(new SugarParameter("@userid", 1));
var sql="select 1 from a where a.id=@userid";//只是舉例
var list= TPBase.DB.SqlQueryable<user>(sql.ToString())
.AddParameters(sqlpara);
sqlpara 為參數 sql為字符串sql語句 user為實體 TPBase.DB 為數據庫
跟蹤結果是這樣的執行方式
exec sp_executesql N' select 1 from a where a.id=@userid ',N'@userid int',@userId=1
當以這種方式執行的時候,如果有參數(參數化),甚至有null值,比如參數@userId=null 。就回導致有時候執行速度非常慢。慢幾十倍。
解決辦法:
1 不用參數化 執行拼成語句 如select 1 from a where a.id=1
2 如果用參數化 執行使用原生執行 TPBase.DB.Ado.SqlQuery
3 試着在sql最后加 OPTION(RECOMPILE)
具體原理 可以去搜索sp_executesql 查看
參考文章 https://www.cnblogs.com/perfectdesign/archive/2009/10/15/sp_executesql.html