데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.


안녕하세요

문의사항이 있어서 글을 남깁니다.


저희가 개발한 프로그램에서

고객정보를 조회하는 로직이 있습니다.

아래의 그림과 같은 화면 구조인데요.


화면.jpg




여기서 [검색조건] 에는

이름/주민번호/핸드폰번호/기타 네가지 정보를 모두 자유롭게 입력할 수 있습니다. (모두 AND조건)

입력 후 검색을 하면  [조회결과] 리스트에 나오게 됩니다.










여기서 DB 테이블 구조가 아래와 같은 구조로 되어 있다고 하면. (인덱스는 각각의 필드에 따로따로 걸려 있습니다)

테이블.jpg


실제 프로시져는 어떤식으로 구성해야 퍼포먼스 손해를 덜 볼 수 있는지 궁금해서 여쭤봅니다.






일단 저는 아래와같이 프로시저 구성을 하긴 했는데요


CREATE PROCEDURE [dbo].[USP_Customer_L]
(
 @이름  NVARCHAR(100),
 @주민번호  NVARCHAR(100),
 @핸드폰번호    NVARCHAR(100),
 @기타   NVARCHAR(100)
)
AS


BEGIN


SELECT 이름, 주민번호, 핸드폰번호, 기타

FROM 고객정보

WHERE

 (@이름  = '' OR (@이름  <> '' AND 이름 LIKE @이름 + '%'  )) 
 AND (@주민번호  = '' OR (@주민번호  <> '' AND 주민번호  LIKE  @주민번호  + '%' ))

 AND (@핸드폰번호    = '' OR (@핸드폰번호    <> '' AND 핸드폰번호    LIKE   @핸드폰번호    + '%' ))

 AND (@기타   = '' OR (@기타   <> '' AND 기타   LIKE   @기타   + '%' ))


END



이런식으로 프로시져 구성을 하니 쿼리 짜기는 편하기는한데..

막상 실행계획을 보니까 인덱스를 안타서 성능면에서 문제가 있더라구요

1. 매개변수의 경우의 수에 맞게 프로시저를 모두 구성해야 하는건지

  ex) (1) [이름]

        (2) [이름] [주민번호]

        (3) [이름] [주민번호] [핸드폰번호]

        (4) [이름] [주민번호] [핸드폰번호] [기타]

        (5) [이름] [주민번호] [기타]

        (6) [이름] [핸드폰번호]

        (7) [이름] [핸드폰번호] [기타]

        (8) [이름] [기타]

            .

            .

            .

            .


2. 아니면 다른 좋은 방법이 있을지 궁금해서 여쭤봅니다.


 





No. Subject Author Date Views
9210 AlwaysOn 가용성 그룹에 DB조인중 에러가 발생합니다. 초짜해커 2016.03.02 2324
9209 쿼리 보는 요령이 있나요?! [7] Blue2 2016.02.29 3022
9208 시간대별 합계,일별 합계 어떻게하면 될까요? [1] 떠벙이 2016.02.29 3096
9207 필터 테이블을 만들고, 특정 TEXT를 필터하고자 합니다. [2] 군고구마 2016.02.29 2642
9206 sql서버 메모리 제한 이렇게 하는게 맞나요? [2] 장성원_305526 2016.02.29 3356
» 프로시져를 어떻게 구성해야 할지 모르겠습니다. [3] 베이비2 2016.02.26 2356
9204 테이블 스크립트 중에 궁금합니다. [5] 아싸라비아콜롬비아 2016.02.26 2086
9203 서브 쿼리에 대해.. [8] Blue2 2016.02.26 2997
9202 조인 질문 [2] Blue2 2016.02.26 2467
9201 MSSQL 서브쿼리 질문 드립니다. [2] 초짜프로그래머 2016.02.26 4073
9200 테이블조회 [4] 쿠아앙 2016.02.26 2543
9199 mdf 권장 size [2] mr-choi 2016.02.25 2843
9198 설치 오류인데, 혹시 이거 보신분 계신가요? [1] 군고구마 2016.02.25 2292
9197 쿼리문 질문.. [3] Blue2 2016.02.25 2601
9196 1년이 몇일인지 확인 하는법이 있나요??? [5] 아싸라비아콜롬비아 2016.02.25 2486
9195 delete 문이 실행된 시간을 알려면? [4] 무심 2016.02.23 2661
9194 sql 쿼리질문입니다. [4] 떠벙이 2016.02.23 2460
9193 원격지 서버에서 성능 Perfmon 가져오기 [5] 군고구마 2016.02.22 3841
9192 쿼리로 DISK 정보를 가져올수 있나요? [4] 군고구마 2016.02.22 2981
9191 쿼리 패턴 검색 질문드립니다. [2] 담덕 2016.02.20 2476





XE Login