2011-02-25 2 views
0

내가 아는 한, where 절을 넣으면 SQL Server 프로파일 러가 문을 사용하는 것을 볼 수 있습니다. sq_executesql; 그게 좋은 방법 이니?LINQ To SQL에서 sp_executesql performant를 사용합니까?

내 상사가 sp_executesql이 SQL 문을 재사용하고 성능 문제를 최소화한다고 생각하기 때문에 그 이유를 묻습니다.

LINQ To SQL의 성능 문제에 대한 우려를 어떻게 해결합니까?

+3

왜 지구상에서하고 싶습니까? –

+0

또한 왜 필요한지에 대해 자세히 알려주십시오. 더 나은 해결책이 될 수도 있습니다. –

+0

@user : 실제로 질문하는 내용과 일치하도록 질문의 제목을 변경합니다. 이전에 질문의 본문이 아무 것도 강요하는 것에 대해 아무 말도하지 않았을 때 ** 무언가 ** 무언가를하고 싶다고 말했던 것입니다. –

답변

0

Linq-to-SQL은 고성능을 위해 좋지 않습니다. 편의상 최적화됩니다. 고성능이 필요한 경우 표준 ADO.NET Connection, Command 및 DataReader로 이동하십시오.

대부분의 애플리케이션에서는 성능이 중요하지 않으므로 Linq-to-SQL은 유용합니다. :)

0

sq_executesql이 performant인지 묻는다면 그렇습니다. sp_executesql에 대한 MSDN의 기사에서 :

sp_executesql을가 문에 매개 변수 값에 변화가 유일한 변화 때 Transact-SQL 문을 여러 번 실행하는 데 사용하는 대신 저장 프로 시저 할 수 있습니다. 은 Transact-SQL 문 자체가 일정하게 유지 만 매개 변수 값을 변경하기 때문에 이 실행 계획은 첫 번째 실행에 대한 생성를 재사용에 는 SQL Server 쿼리 최적화 프로그램은 가능성이 높습니다.

0

두 가지를 묻는 것처럼 대답하기가 약간 힘듭니다. 모든 것이 평등했다하더라도 Linq to SQL은 POCO를 만드는 것만큼 유연하지 않습니다. 가격을 지불하면 데이터에 액세스하는 더 좋은 방법입니다 (가장 가볍고 빠르며 유연합니다). 이것은 무엇입니까 Andomar는 DataReader에서 제안합니다. sq_executesql 대 문자열을 연결하여 명령에 전송하는 방법에 대해 묻는다면 EddieGroves에 해당 대답이 있습니다. 그저 sq_executesql이 SQL 인젝션에 대한 호출의 가능성이 적은 변수에 매개 변수로 추가 할 것이기 때문에 더 안전하다는 것을 덧붙이고 싶습니다. 문자열을 연결하면 SQL이 매번 구문을 컴파일하도록 강제 할 것이다 (그래서 느리다). sq_executesql을 CRUD 저장 프로 시저와 비교한다면 올바른 것입니다. CRUD는 성능이 뛰어날뿐만 아니라 잠재적 인 SQL 주입도 처리합니다. SQL 서버는 저장 프로 시저를 한 번 컴파일합니다.

관련 문제