我正在制作精选的已编译查询Here
但我的问题是如何为Insert和Update创建编译查询?
我的插入查询是
DataClassesDataContext db = new DataClassesDataContext();
tbl_desc_index tabledesc = new tbl_desc_index();
tabledesc.ed_journal_id = Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value));
tabledesc.editor_id = Convert.ToInt32(Server.HtmlEncode(Request.Cookies["editorid"].Value));
tabledesc.short_desc = ck1.Text;
tabledesc.abt_journal = ck2.Text;
tabledesc.aim_scope = ck3.Text;
tabledesc.indexed_in = ck4.Text;
db.tbl_desc_indexes.InsertOnSubmit(tabledesc);
db.SubmitChanges();
更新查询
DataClassesDataContext db = new DataClassesDataContext();
var update = db.tbl_desc_indexes.First(p => p.ed_journal_id == Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value)) && p.editor_id == Convert.ToInt32(Server.HtmlEncode(Request.Cookies["editorid"].Value)));
update.short_desc = ck1.Text;
update.abt_journal = ck2.Text;
update.aim_scope = ck3.Text;
update.indexed_in = ck4.Text;
db.SubmitChanges();
答案 0 :(得分:2)
您希望加快哪部分代码?前七行本身与Linq无关。第8行,db.tbl_desc_indexes.InsertOnSubmit(tabledesc);
仅传递参考。
完成所有艰苦工作的声明是
db.SubmitChanges();
这基本上做了两件事:找出应该将什么插入和更新发送到数据库,然后发送它们。生成实际语句(第二步的一部分)非常有效,特别是对于插入语句。在更新语句的情况下,生成更复杂(即有一些开销),因为它根据更新的列生成不同的更新语句,但结果是更有效的网络使用,并且通常SQL Server执行速度更快。
您唯一能做的就是创建插入和更新(和删除)的存储过程,根据您的特定需求进行定制。虽然不能保证那些会更快,但你可以尝试衡量。
话虽如此,在某些情况下,通过执行更新或删除的设置操作,即一次更新或删除多行,您可以获得非常显着的性能提升。存储过程是可行的方法。