불필요한 데이터베이스 런타임 처리

SQL 문에서는 전체 테이블 이름(데이터베이스 이름 포함)을 사용하십시오..

항상 명령문에 각 테이블 이름과 함께 데이터베이스 이름을 명시적으로 지정하십시오. 기본 데이터베이스인 경우에는 “main”을 사용합니다. 예를 들어, 다음 코드에는 명시적인 데이터베이스 이름인 main 이 포함됩니다.

SELECT employeeId 
FROM main.employees

데이터베이스 이름을 명시적으로 지정하면 런타임에서 일치하는 테이블을 찾기 위해 연결된 각 데이터베이스를 확인할 필요가 없습니다. 또한 런타임에서 잘못된 데이터베이스를 선택할 가능성도 방지됩니다. SQLConnection이 단일 데이터베이스에만 연결되는 경우라도 이 규칙을 따르십시오. 내부적으로 SQLConnection은 SQL 문을 통해 액세스할 수 있는 임시 데이터베이스에도 연결됩니다.

SQL INSERT SELECT 문에 열 이름을 명시적으로 사용하십시오..

다음 예에서는 열 이름을 명시적으로 사용하는 방법을 보여 줍니다.

INSERT INTO main.employees (firstName, lastName, salary) 
VALUES ("Bob", "Jones", 2000) 
     
SELECT employeeId, lastName, firstName, salary 
FROM main.employees

이전 예와 다음 예를 비교해서 보십시오. 피해야 하는 코드 스타일:

-- bad because column names aren't specified 
INSERT INTO main.employees 
VALUES ("Bob", "Jones", 2000) 
     
-- bad because it uses a wildcard 
SELECT * 
FROM main.employees

명시적인 열 이름이 없으면 런타임에서 열 이름을 확인하기 위해 추가적인 작업을 수행해야 합니다. SELECT 문에서 명시적 열이 아니라 와일드카드를 사용하는 경우 런타임에서 추가 데이터를 검색합니다. 이러한 추가 데이터로 인해 처리 작업이 추가로 발생하고 필요하지 않은 객체 인스턴스가 추가로 생성됩니다.

테이블을 자체 비교하지 않는 한 명령문 하나에 동일한 테이블을 여러 번 연결하지 마십시오..

SQL 문이 커지면 의도하지 않게 데이터베이스 테이블을 쿼리에 여러 번 연결할 수 있습니다. 테이블을 한 번만 사용하여 동일한 결과를 얻을 수 있는 경우가 많습니다. 쿼리에서 하나 이상의 보기를 사용하는 경우 동일한 테이블을 여러 번 연결할 가능성이 높습니다. 예를 들어 테이블을 쿼리에 연결하고 해당 테이블의 데이터를 포함하는 보기도 연결할 수 있습니다. 두 가지 작업으로 둘 이상의 연결이 발생합니다.