programing

SQL 순서 위치 표기법을 사용하는 이점

easyjava 2023. 3. 10. 22:52
반응형

SQL 순서 위치 표기법을 사용하는 이점

배경 정보

서수 위치 표기법(AKA 서수)은 열 목록의 열 순서를 기준으로 한 열 약어입니다.SELECTcolumn name 또는 column alias 대신 절을 지정합니다.에서 일반적으로 지원됨ORDER BY절, 일부 데이터베이스(MySQL 3.23+, Postgre)SQL 8.0+)는 다음 구문을 지원합니다.GROUP BY절도 마찬가지입니다.

다음은 Ordinals를 사용하는 예입니다.

GROUP BY 1, 2
ORDER BY 1, 2

이 방법은 쿼리를 취약하게 만들기 때문에 좋지 않습니다.열 순서가 변경되면 서수를 업데이트해야 합니다. 그렇지 않으면 쿼리가 예상한 값을 반환하지 않습니다.대부분의 경우 에러가 발생할 수 있습니다.GROUP BY이러한 위치의 열이 집계로 감싸지면...

질문

유일하게 생각할 수 있는 장점은 저장 프로시저나 함수를 사용하지 않는 경우(서수 사용의 의미가 있는 경우) 유선상의 데이터 전송이 적다는 것입니다.제가 부족한 다른 혜택은 없나요?

나는 그것을 사용한다:

  • 트러블 슈팅을 좋아하는 경우
  • 인텔리센스 없이 애드혹 쿼리 생성

좋은 점은 없어요.

SQL Server는 ORDER BY에서만 지원합니다.다른 곳에서도 그것은 평가되어야 할 표현이다.

많은 열이 있는 테이블을 쿼리할 때(데이터 탐색을 위해 애드혹랜드에서) 자주 사용됩니다.PROD 환경에서는 이런 식으로 코드화할 수 없습니다.) 관심 있는 분야를 서로 가깝게 하기 위해 다음과 같은 작업을 수행합니다.

select top 1000
  Col_1, Col_18, Col_50, Col_117, *
from
  TableWithTonsOfCols
order by
  1, 4 desc, 3

만약 내가 말한다면order by Col_1, Col_117 desc, Col_50"*"가 두 배로 증가했기 때문에 어느 열을 주문해야 하는지 알 수 없기 때문에 내 쿼리는 토할 것입니다.흔하지는 않지만 여전히 유용한 기능입니다.

다음 두 가지 사용 사례가 있습니다.

  • 급해서 타이핑하기 싫어서 서수를 사용합니다.임시적이지 않은 사용을 위해 항상 열 이름으로 변환합니다.
  • 제가 주문하는 칼럼은 장황합니다CASE스테이트먼트를 재입력하는 것이 아니라CASE를 위한 스테이트먼트ORDER BY절, 나는 서수를 사용하여 건조함을 유지한다CTE, 서브쿼리, 뷰 등 다양한 방법이 있지만 서수가 가장 간단한 해결책이라는 것을 종종 알게 됩니다.

이제는 인라인 뷰를 사용하는 경향이 있습니다.

select col_a, count(*) from
  (select case ...... end col_a from ...)
group by col_a
order by col_a;

그러나 그것들이 유효한 구문이었던 시절에는 열의 전체 텍스트를 다시 입력하는 데 도움이 되었습니다.까다로운 함수의 경우 SELECT 값과 ORDER BY 값 사이에 다음과 같은 불일치가 발생할 수 있습니다.

select ltrim(col_name,'0123456789')
from table
order by ltrim(col_name,'123456789')

SELECT의 '0'은 선택한 항목에 따라 주문하는 것이 아님을 의미합니다.

쿼리 생성 알고리즘이 있습니다. SQL은 자동으로 생성됩니다.서수를 사용하면 필드 이름을 다시 가져올 필요 없이 생성된 필드를 참조할 수 있습니다.사용자는 화면의 목록에서 필드 이름을 선택하여 테이블의 필드 이름을 참조할 수 있습니다.목록을 sql에 대응시키는 한 SELECT 항목도 서수라면 필드 이름을 알 필요가 없습니다.

메모리에서는 이것이 1970년대 후반에는 SQL 표준으로 사용되었다고 합니다.

내 기억이 맞다면, 당신이 설명한 것과 같은 서수 사용은 향후 SQL Server 릴리즈에서 마이크로소프트에 의해 폐지될 것입니다.제가 틀릴 수도 있지만, 그런 것 같아요.긴 쿼리를 포함하는 파생 열을 처리할 때 입력이 적기 때문에 특정 경우에 사용하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/2253040/benefits-of-using-sql-ordinal-position-notation

반응형