1

이 질문에는 이미 답변이 있습니다.

표시된대로 선택한 컴파일 된 쿼리를 만들고 있습니다.이리

하지만 내 질문에 삽입 및 업데이트에 대한 컴파일 된 쿼리를 만드는 방법입니다?

내 삽입 검색어

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();


  • 그 복제되지 .... 내가 삽입 및 업데이 트에 대한 컴파일 된 쿼리를 만드는 방법을 몰라 - user2977985
  • @ 제임스 내 실수 미안 .... 나는 중복 된 질문에서 내 대답을 찾았습니다. - user2977985
  • 옆에 메모로서, 그것들의 목적은 무엇인가?Server.HtmlEncode전화? 그들은 나에게 이해가 가지 않는다. 쿠키에 정수가 포함되어 있거나 돈이없는 경우에도 아무런 도움이되지 않습니다. 또는 나는 무엇인가 놓치고 있냐? - Kris Vandermotten
  • 예 그들은 그것의 정수를 포함합니다. - user2977985

1 답변


2

코드의 어느 부분에서 속도를 높이시겠습니까? 처음 7 행은 Linq 그 자체와는 아무런 관련이 없습니다. 8 호선,db.tbl_desc_indexes.InsertOnSubmit(tabledesc);단순히 참조를 전달하는 것입니다.

모든 노력을 다한 진술은

db.SubmitChanges();

이것은 기본적으로 두 가지 작업을 수행합니다. 삽입 및 업데이트를 데이터베이스에 보내야하는지 확인하고 보내십시오. 두 번째 단계의 일부인 실제 문장을 생성하는 것은 특히 삽입 구문에 대해 매우 효율적입니다. 업데이트 문의 경우 업데이트 된 열에 따라 서로 다른 업데이트 문을 생성하기 때문에 세대가 더 복잡해집니다 (즉, 약간의 오버 헤드가 있음). 그러나 그 결과는 네트워크 사용이보다 효율적이고 SQL Server가 더 빨리 실행되는 결과를 낳습니다.

당신이 할 수있는 유일한 방법은 삽입과 업데이트 (그리고 삭제)를위한 저장 프로 시저를 생성하여 사용자의 특정 요구에 맞춘 것입니다. 그 사람들이 더 빠를 것이라고 보장 할 수는 없지만, 시도하고 측정 할 수는 있습니다.

즉, 한 번에 하나 이상의 행을 업데이트하거나 삭제하는 등 업데이트 또는 삭제를위한 설정 작업을 수행하면 성능이 크게 향상되는 경우가 있습니다. 스토어드 프로 시저가 그때가는 길입니다.


  • 좋아, 더 많은 질문이 거기에있다. - user2977985
  • 내 select 쿼리는 var rr = editordetail1 (db, 1,2); 그것은 컴파일 된 쿼리에서 컴파일 된 쿼리에서 2 정수를 넘기는 것을 의미합니다 .... ... public static Func < DataClassesDataContext, int, IQueryable < editor_j_inf > > editordetail1 = CompiledQuery.Compile ((DataClassesDataContext db, int a) db.editor_j_infs의 p1에서 > 여기서 p1.ed_journal_id == a orderby p1.editor_id 내림차순 선택 p1); // 그것의 프리 컴파일 프로세스 - user2977985
  • @Xtremcool은 마지막 질문이 새로운 질문 인 경우, 질문으로 답하는 것이지이 질문에 대한 답은 코멘트가 아닙니다. - Kris Vandermotten
  • 좋아, 나는 새로운 질문을하고있다. - user2977985
  • ~을 보아라.stackoverflow.com/questions/20655383/… - user2977985

연결된 질문


관련된 질문

최근 질문