기본 키가 JobId
인 테이블이있는 SQL Azure 데이터베이스가 있습니다. 사용자는 하나 이상의 (아마도 10, 아마도 1 만) 값을 포함 할 수있는 배열로 "작업 ID"를 전송합니다. 나는 그것을 위해 SQL 쿼리를 작성하는 방법을 결정할 수 없다. .NET Framework 클래스를 사용합니다. 여기여러 값 중 하나와 동일한 열 값을 가진 행을 선택하는 SQL 요청을 작성하는 방법은 무엇입니까?
CREATE TEMP TABLE JobIdsTable
foreach(JobId in JobIdsFromClients) {
INSERT INTO JobIdsTable VALUES (JobId)
}
SELECT * FROM JobsTable WHERE JobId IN SELECT * FROM JobIdsTable
는 코드 작성의 관점에서 멋진 외모,하지만 난 잘 모르겠어요 : 나는 임시 테이블을 생성하고 WHERE IN
중첩 SELECT
(의사 -like SQL + C#)를하고있다 참조
하나 개의 옵션 항상 빨리 달릴 것입니다.
또 다른 옵션이 형성 거대한 OR
연결을 생성하는 SELECT
거대한 : 여기
SELECT * FROM JobsTable WHERE JobId='JobId1' OR JobId='JobId2' OR JobId='JobId3' .....
이 하나 SELECT
입니다하지만 합치의 생각이 (일반적으로 내가 만들 System.Data.SqlClient.SqlCommand.Parameters
을 사용하십시오 문자열이 좋은 소리가 나지 않는다 갈망 매개 변수화 된 쿼리가 있지만 매우 복잡 할 것입니다. 또한 SQL 쿼리가 얼마나 오랫동안 지속될 수 있는지에 대해서는 확실하지 않습니다.
내 쿼리를 관리 가능하고 효율적으로 수행하고 싶습니다. 두 옵션의 단점을 참조하십시오.
어느 것을 선택합니까? 대신 다른 방법으로합니까?
대략 얼마나 많은 JobIds가있을 것으로 예상하십니까? –
@Sam : 목록이 소프트웨어로 생성되며 그 소프트웨어는 다른 사람들이 쓴 것이므로 실제로는 알 수 없습니다. – sharptooth