2008-09-29 1 views
0

효율성에 관해 궁금한 점이 있습니다. 데이터베이스에 다른 것을 나타내는 숫자 숫자 인 필드가 있다고 가정 해보십시오. 마찬가지로 1의 값은 기간이 30 일임을 의미합니다. GridView RowDataBound 또는 SQL에서 직접 결과를 조작 하시겠습니까?

그것은 ...

SELECT 
    CASE TermId 
     WHEN 1 THEN '30 days' 
     WHEN 2 THEN '60 days' 
    END AS Term 
FROM MyTable 

더 나은 (더 효율적으로)이 같은 SELECT 문을 코딩 할 수 ... 그리고의 GridView에 직접 결과를 결합, 또는 TERMID을 평가하기 위해 더 나은 것시겠습니까 필드 GridView의 RowDataBound 이벤트 및 그에 따라 셀 텍스트를 변경?

확장 성이나 그와 비슷한 것에 대해 걱정하지 마라. 전반적인 효율성의 차이에만 관심이있다. 가치있는 것을 위해 데이터베이스는 웹 서버에 있습니다.

답변

1

효율성은 여기에 상관 없지만 코드 유지 관리는 중요합니다. 자신에게 물어보십시오.이 값은 변할 것입니까? 그들이한다면? 이 가치가 바뀌면 2 년의 사용 후에 무엇을해야합니까? SQL로 스크립팅하는 것이 유지 관리가 쉽고 (변경하기가 쉽다는 것이 명백 해지면) 저장 프로 시저에서 수행하십시오. 나중에 코드에서 변경하는 것이 더 쉬운 경우에는 그렇게하십시오. 코드를 복잡하게 보이지 않으므로 두 가지 중 하나를 수행하면 얻을 수있는 이점이 상당히 낮습니다.

0

여러 가지 이유로 인해 격자보기에서 변환을 처리합니다.

이유 # 1 : SQL 리소스가 공유됩니다. 그리드가 배포됩니다. 더 나은 확장 성.

이유 # 2 : 두 개의 정수와 문자열을 전송하는 대역폭이 낮습니다.

이유 # 3 : 코드를 SQL Server 코드에 영향을 미치지 않고 다른 언어로 현지화 할 수 있습니다.

+0

이유 # 2를 이해하지 못합니다. 사용자가 선택한 방법에 관계없이 동일한 것을 보게 될 것이므로 대역폭은 동일하지 않습니까? –

+0

# 2에서 나쁘다. 환경이 ASP.NET임을 알지 못했습니다. 나는 WinForms 그리드를 생각하고 있었다. – hurcane

0

TermID라는 데이터베이스 테이블의 필드는 다른 테이블 ("용어"라고도 함)에 대한 외래 키를 나타냅니다.

이 경우 해당 테이블에는 "30 일"텍스트를 저장할 수있는 설명 필드가 있거나 있어야합니다. 설명 텍스트를 검색하려면이 테이블에 참여하거나/참여해야합니다.

이 조인은 효율성을 향상시키지 못할 수도 있지만, 방해가되지 않도록 조인하기에 충분히 가볍습니다.

+0

아니요, 설명이있는 다른 테이블이 없습니다. 이 번호는 내부적으로 잘 알려져 있습니다. –

관련 문제