본문 바로가기
IT경험공유/DataBase

[SQL SELECT문] 컬럼명 나열 VS 아스타(*) 차이

by 경공N잡러 2023. 9. 7.

SQL DML SELECT쿼리를 작성할 때 단순히 출력만을 고려한다면 좋은 쿼리를 작성하기 어렵습니다. SELECT문을 작성하 때 출력될 컬럼명을 직접 명시하는 것과 아스타(*)로 처리하는 것에 대해서 어떤 차이가 있는지 성능, 유지보수, 보안 측면에서 설명해드리겠습니다.

 

SQL SELECT문

 

목차

     


    SELECT 작성 시 컬럼명 나열 VS 아스타 차이 ( DBMS 공통)

    SELECT * FROM 테이블명
    SELECT 컬럼명1, 컬럼명2 FROM 테이블명

    SELECT 문을 작성할 때 위와 같이 두가지 형태로 기본적으로 하게 됩니다. 많은 초보 개발자분들이 이 부분에 대해서 크게 신경쓰지 않지만 둘의 차이는 성능, 유지보수, 보안 측면에서 고려될 수 있습니다. 단순히 테스트용 SELECT가 아닌 실제 운영되는 서비스를 개발하기 위해 사용되는 SQL문이라면 더욱 중요시 하여야 합니다. 

     


     

    성능 

    • SELECT * 쿼리는 테이블의 모든 열을 검색하기 때문에 불필요한 데이터를 반환할 수 있습니다. 이는 데이터베이스 서버에 부하를 주고, 대용량 테이블에서는 성능 저하의 원인이 될 수 있습니다.
    • SELECT 컬럼명1, 컬럼명2와 같이 필요한 컬럼만 선택하는 것은 데이터베이스 서버에 더 효율적이며 빠른 응답 시간을 제공합니다.
    • SELECT *를 사용할 때 인덱스의 효용성이 감소할 수 있습니다. 왜냐하면 SELECT *는 모든 열을 반환하기 때문에 데이터베이스 엔진은 테이블을 스캔하고 인덱스를 거의 활용하지 않을 수 있습니다. 필요한 컬럼만 선택하면 인덱스를 효과적으로 활용하여 더 빠른 검색 속도를 얻을 수 있습니다.

    유지보수

    • SELECT *은 결과 집합의 컬럼 구조를 알 수 없기 때문에 코드를 유지하거나 변경할 때 문제를 발생시킬 수 있습니다. 예를 들어, 열의 순서가 변경되거나 새로운 열이 추가될 경우
    • SELECT *를 사용한 모든 코드를 수정해야 할 수 있습니다. 반면에 SELECT 컬럼명1, 컬럼명2를 사용하면 결과 집합의 구조가 명시적으로 정의되어 있으므로 코드의 가독성과 유지보수가 용이해집니다.

    보안 측면

    • SELECT *는 데이터베이스 테이블의 모든 열을 반환하므로, 민감한 정보가 포함된 열을 노출시킬 수 있습니다. 이는 보안 위협이 될 수 있습니다.
    • 필요한 컬럼만 선택하면 민감한 정보가 노출될 위험을 줄일 수 있으며, 데이터 접근 권한을 효과적으로 관리할 수 있습니다.

    개발자 

    • SELECT *를 사용하면 개발자가 결과 집합의 구조를 알기 어려울 수 있으며, 디버깅 및 쿼리 이해가 어려울 수 있습니다.
    • 명시적으로 컬럼을 지정하는 것은 개발자가 데이터베이스 스키마와 쿼리를 이해하고 관리하기 쉽게 만듭니다.

    마무리

    SELECT문을 작성할 때, 간과하고 넘어갔을 부분이 나중에 생각지도 못한 오류로 나타날 수도 있고, 성능 문제를 야기할 수 있습니다. 처음부터 컬럼명을 나열해주는 습관을 들여 아주 간단한 SQL문이라도 안전하고 좋은 쿼리를 짜는 것이 개발자의 성장에도 매우 중요합니다.


     

    제48회 SQLD 합격후기 교재추천 및 공부법 정리

     

    제48회 SQLD 합격후기 교재추천 및 공부법 정리

    제48회 SQLD 사전결과가 오픈되어서 합격 여부를 확인하였습니다. 시험을 간단히 치른 입장에서도 결과를 확인할 때는 긴장이 되었습니다. 다행히 SQLD 합격후기를 들려드릴 수 있게 되었습니다.

    open-n-job.tistory.com

     

    개발자 취업을 위한 준비 방법

     

    개발자 취업을 위한 준비 방법

    작년 개발자 대란이 생기면서 개발자에 대한 수요가 급증했습니다. 급격하게 발전하고 있는 IT 기술에 따라 필요한 개발자도 많이 늘어난 것입니다. 개발자 취업을 위한 준비 방법에 대해서 포

    open-n-job.tistory.com

     

    SQLD 기출 변형 문제 풀이/해설 - SUM(), MIN(),MAX(), COUNT(), AVG()

     

    SQLD 기출 변형 문제 풀이/해설 - SUM(), MIN(),MAX(), COUNT(), AVG()

    SQLD 기출을 변형한 문제입니다. SQLD를 처음 공부하시는 분이라면 위 함수에 대한 개념을 숙지하고 문제를 풀어보시면 이해하는데 도움이 될 것 입니다. 해당 유형에 대한 헷갈릴 수 있는 것들을

    open-n-job.tistory.com

     

    [DB] 데이터베이스 정규화 예시를 통한 완벽이해

     

    [DB] 데이터베이스 정규화 예시를 통한 완벽이해

    데이터베이스의 정규화에 대해서 알아보도록 하겠습니다. 목차 데이터베이스 정규화 먼저, 조금 딱딱할 수 있는 이론을 살펴보도록 하겠습니다. 데이터베이스 정규화란, 데이터베이스의 설계

    open-n-job.tistory.com

     

    [DB/ORACLE/SQLSERVER] 테이블 명 변경 / 테이블 칼럼 추가/수정/삭제/변경 하는 방법 - ALTER TABLE / RENAME

     

    [DB/ORACLE/SQLSERVER] 테이블 명 변경 / 테이블 칼럼 추가/수정/삭제/변경 하는 방법 - ALTER TABLE / RENAME

    Oracle과 SQLServer DBMS에서 제공하는 테이블 명을 변경 또는 칼럼을 추가하거나 수정 삭제하는 방법입니다. 해당 주제에 대해서 잘못된 정보 또는 추가적인 정보가 있을 시 댓글로 남겨주시면 감사

    open-n-job.tistory.com

     

    댓글