SQL에는 사람이 읽을 수 있는 레이아웃과 컴퓨터를 위한 간결한 단일 라이너라는 두 가지 유용한 모양이 있습니다. 서식 지정(예쁜 인쇄)은 검토자가 논리를 따를 수 있도록 키워드, 조인 및 중첩된 선택 항목을 명확한 줄에 배치합니다. 축소하면 주석과 과도한 공백이 제거되므로 로그 줄이나 디버그 덤프에서 쿼리 비용이 더 적은 바이트가 소요됩니다. 쿼리를 이해하는 것을 대체할 수도 없습니다. 단지 읽거나 저장하는 것이 얼마나 어려운지 변경하는 것뿐입니다. SQL Minifier & Formatter에서 동일한 문에 대해 두 가지를 모두 시도해 보세요. 브라우저에서 실행되며 업로드되지 않습니다.
빠른 답변
코드 검토, PR 차이점 및 교육 형식입니다. 로그, 측정항목 라벨 또는 붙여넣은 디버그 문자열에 대해 한 줄 페이로드가 필요한 경우 축소하세요. 마이그레이션이나 앱 소스에서 제공하는 복사본을 축소하지 마세요. 읽을 수 있도록 유지하세요. 프로덕션 SQL을 저장하는 서버보다 클라이언트 측 도구를 선호합니다.
리뷰의 가독성과 로그의 페이로드 크기
한 줄의 다중 조인 쿼리는 풀 요청의 책임입니다. 들여쓰기와 줄 바꿈을 사용하면 `JOIN`, `WHERE` 및 하위 쿼리가 개요처럼 스캔됩니다. 그것이 형식 지정의 임무입니다. 다음 사람(미래의 당신 포함)이 술어를 수정하기 전에 의도를 볼 수 있도록 도와주세요.
- 청중이 사람인 경우의 형식 - 검토, 페어 프로그래밍, 사건 기록, 온보딩 문서.
- 청중이 예산 규모가 있는 구조화된 로그, 티켓 필드에 클립보드 붙여넣기 또는 압축 재생 문자열인 파이프인 경우 축소합니다.
- 소스 마이그레이션과 ORM 원시 SQL 형식을 유지하세요. 운영 도구에 넣은 일회용 복사본만 축소하세요.
- 서식이 지정된 쿼리와 축소된 쿼리는 의미상 동일한 문이어야 합니다. 공백과 주석만 변경됩니다.
JS 및 CSS에 비해 SQL 축소가 드문 이유
프런트엔드 자산은 페이지가 로드될 때마다 네트워크를 통해 이동하므로 팀은 기본적으로 JavaScript 및 CSS를 축소합니다. SQL은 일반적으로 그렇지 않습니다. 쿼리는 앱이나 데이터베이스 옆에 있습니다. 병목 현상은 텍스트의 몇 개의 공백이 아니라 계획 및 I/O입니다. 번들러와 CDN은 `SELECT`를 볼 수 없습니다.
- JS/CSS 축소는 사용자가 다운로드하는 바이트를 줄입니다. SQL 축소는 쿼리 시간을 거의 변경하지 않습니다.
- JSON API는 종종 연결 크기 때문에 축소됩니다. JSON 축소기 및 포맷터를 참조하세요. 반면 SQL은 저장소에서 꽤 유지됩니다.
- SQL이 축소되면 일반적으로 빌드 파이프라인이 아닌 로그 위생 또는 일회용 붙여넣기를 위한 것입니다.
- ORM이 이미 한 줄짜리 매개변수화 및 로그를 작성했다면 별도의 축소 단계가 전혀 필요하지 않을 수도 있습니다.
방언 문제
"SQL"은 하나의 문법이 아니라 계열입니다. PostgreSQL을 가정하는 포맷터는 MySQL 백틱, SQL Server 대괄호 또는 Oracle 특정 절을 조작할 수 있습니다. 주석이라고 생각되는 것을 삭제하는 축소기는 방언 관련 힌트를 파괴할 수 있습니다.
- 식별자: 큰따옴표, 역따옴표, 대괄호 - 블라인드 재형식은 엔진 전체에서 의미를 변경할 수 있습니다.
- 주석: `--` 줄 주석에는 개행 문자가 필요합니다. 조심스럽게 제거하거나 다음 키워드를 댓글에 붙입니다.
- 공급업체 힌트 및 독점 기능(`LIMIT`/`OFFSET` 대 `TOP`, `ILIKE`, `RETURNING`) - 실제로 실행하는 방언을 유지합니다.
- 문자열 리터럴 및 달러 인용: 문자열 내부의 순진한 공백 축소는 기능이 아니라 버그입니다.
같은 설명, 다른 엔진
데이터베이스 간에 쿼리를 이동하는 경우 먼저 가독성을 위해 형식을 지정한 다음 방언 키워드를 직접 수정하세요. MySQL에서 Postgres SQL을 유효하게 만들기 위해 자동 형식만 신뢰하지 마십시오.
프로덕션 쿼리를 서버측 포맷터에 붙여넣지 마세요.
프로덕션 SQL에는 스키마 이름, 테이블 구조, 필터 값, 때로는 리터럴로 유출된 PII가 포함되는 경우가 많습니다. 서버에서 형식을 지정하기 위해 쿼리를 업로드하는 웹 사이트는 로그, 지원 티켓 또는 나중에 위반 사항 등 사용자가 제어할 수 없는 복사본을 생성합니다.
- 장치 외부로 텍스트를 보내지 않는 브라우저 내 도구를 선호하십시오.
- 팀원과도 쿼리를 공유하기 전에 리터럴과 비밀을 수정하세요.
- "무료 온라인 SQL 포맷터"를 페이스트빈처럼 취급하십시오. 달리 입증될 때까지 보존을 가정하십시오.
- 이 사이트의 SQL 축소기 및 포맷터는 비공개, 클라이언트측 사용을 위해 제작되었습니다. 업로드 없이 포맷하거나 축소할 수 있습니다.
짧은 의사결정 가이드
- PR을 시작하시나요? 체재.
- 문자 제한이 있는 로그 필드에 쿼리를 채우시나요? 작게 하다.
- 축소가 주석이나 문자열을 손상시키지 않았는지 확인하시겠습니까? 다시 포맷하고 정신적으로 비교해보세요.
- 아직도 SQL을 배우고 계시나요? 형식 유지 - 축소된 SQL은 끔찍한 튜토리얼입니다.
자주 묻는 질문
형식을 지정하면 데이터베이스가 쿼리를 실행하는 방식이 변경되나요?
아니요. 문자열 리터럴 외부의 공백과 주석은 계획을 변경하지 않습니다. 의미론은 들여쓰기가 아닌 키워드, 식별자 및 조건자에서 나옵니다.
내 애플리케이션 소스에서 SQL을 축소해야 합니까?
거의 결코. 마이그레이션 및 체크인 쿼리를 읽을 수 있도록 유지합니다. 로그 또는 붙여넣기용으로 일회용 복사본만 축소합니다.
SQL 축소는 JavaScript 축소와 비슷합니까?
둘 다 불필요한 공백을 제거한다는 의미에서만 가능합니다. JS minify는 종종 로컬 이름을 바꾸고 크기에 대한 구문을 다시 작성합니다. SQL 축소는 보수적으로 유지되어야 합니다. 공백과 주석만 사용하지 않으면 방언이 깨질 위험이 있습니다.
SQL 옆에 있는 JSON 및 API 페이로드는 어떻습니까?
Wire 형식은 네트워크 경로 축소의 이점을 여전히 누릴 수 있습니다. 디버깅할 때 JSON 형식을 지정하고 배송 시 축소합니다. 이 문서에서 설명하는 것과 동일한 분할이 SQL에 대해 설명되며 JSON Minifier & Formatter를 사용하여 적용됩니다.
ToolsMinify에서 안전하게 포맷하고 축소할 수 있나요?
예. SQL Minifier & Formatter에 붙여넣고 형식 또는 축소를 선택한 후 결과를 복사합니다. 처리는 브라우저에 유지됩니다.
ToolsMinify에서 사용해 보세요
아래의 모든 도구는 무료로, 가입이나 업로드가 필요하지 않은 브라우저에서 실행됩니다.
- SQL 축소기 및 포맷터 - 귀하의 장치에서 개인적으로 SQL을 인쇄하거나 축소할 수 있습니다.
- JSON 축소기 및 포맷터 - API 페이로드에 대한 동일한 형식과 축소 아이디어.
- 자바스크립트 축소기 - 여기서 minify는 바이트가 네트워크에 도달하기 때문에 루틴입니다.
- 모든 개발자 도구 - 전체 카테고리 색인.
무료로 사용해 보세요
SQL 축소기 및 포맷터를 열고 지저분한 조인을 붙여넣고 검토를 위해 형식을 지정한 다음 로그 줄에 대한 복사본을 축소합니다. 이 모든 작업은 브라우저를 떠나지 않고도 가능합니다.