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
'programing' 카테고리의 다른 글
| 빈 초기화 완료 후 메서드 호출 방법 (0) | 2023.03.10 |
|---|---|
| 리액트 네이티브로 함수가 가득한 도우미 파일을 작성하려면 어떻게 해야 합니까? (0) | 2023.03.10 |
| 오류: 'types'는 .ts 파일에서만 사용할 수 있습니다. - @ts-check를 사용하는 Visual Studio 코드 (0) | 2023.03.10 |
| ASP를 사용합니다.jquery ajax를 사용한 NET MVC 검증 (0) | 2023.03.10 |
| Ajax를 통한 레일 플래시 알림 (0) | 2023.03.10 |