임시 테이블에서 varchar 크기가 중요합니까?


16

저장 프로 시저에서 임시 테이블의 varchar(255)모든 varchar필드를 사용 하는 것에 대한 아내의 작업에 대한 토론이 있습니다 . 기본적으로 한 캠프는 255를 사용하려고합니다. 정의가 변경 되어도 항상 작동하기 때문에 다른 캠프는 잠재적 인 성능 향상을 위해 소스 테이블의 크기를 고수하려고합니다.

퍼포먼스 캠프가 맞습니까? 다른 의미가 있습니까? 그들은 SQL Server를 사용하고 있습니다.


나는 아마도 당신이 처음에는 임시 테이블이 필요하지 않다고 주장합니다. 그들은 무엇을 위해 사용되고 있습니까? 필요한 경우 이러한 특정 열은 무엇에 사용됩니까? 그들은 어떤 종류의 조인이나 비교에 사용됩니까? varchar가 아닌 기본 열 nvarchar가 있습니까?
Aaron Bertrand

@AaronBertrand 모듈화를 위해 임시 테이블이 있습니다. 데이터는 변경 될 수있는 비즈니스 규칙에 따라 여러 번 변환되고 채워집니다. MAX()믹스에 몇 가지가 있다고 생각 합니다.
브라이언 니켈

답변:


6

임시 테이블을 사용하는 방법에 따라 데이터 잘림 문제가 발생할 수 있습니다.

이 예제는 약간 고안되었지만 내 요점을 보여줍니다. 예:

  1. 사용자 테이블 열은 varchar (50)입니다.
  2. 임시 테이블 열은 varchar (255)입니다.
  3. 사용자 테이블의 해당 열에 45자가있는 레코드가 있습니다.
  4. 절차에서 임시 테이블을 사용자 테이블에 병합하기 전에 해당 열의 끝에 '-for win'을 연결하십시오.

임시 테이블은 길이가 59 인 새 varchar 값을 기꺼이 받아들입니다. 그러나 사용자 테이블은 그럴 수 없었습니다. 프로 시저에서이를 처리하는 방법에 따라 잘림 또는 오류가 발생할 수 있습니다.

이러한 문제를 문서화하고 설명하지 않으면 절차가 예기치 않은 방식으로 수행 될 수 있습니다.

개인적으로, 나는이 질문에 대한 답이 100 % 정확한 것이라고 생각하지 않습니다. 실제로 임시 테이블을 사용하는 방법에 따라 다릅니다.

도움이 되었기를 바랍니다


0

저장 프로 시저에서 임시 테이블의 varchar(255)모든 varchar필드에 사용

실제 필드 길이를 사용하는 것에 기대어 있습니다.

나는 최근에 MySQL (SQL Server가 비슷하다고 가정한다) 임시 테이블이 각 varchar열에 가능한 최대 길이를 저장하기에 충분한 메모리를 할당한다는 것을 읽었습니다 ... varchar모든 필드에 필요한 메모리의 200 % -500 %를 할당하는 체계적인 접근 저장 프로시 저는 시스템 리소스를 불필요하게 사용하는 것처럼 보입니다. 이러한 임시 테이블을 작성하는 데 상당한 양의 메모리를 사용하는 경우, 캐싱에 사용중인 메모리를 불필요하게 청구하여 저장 프로 시저가 완료된 후에도 나중에 언젠가 서버에 더 많은 작업을 작성하게됩니다.

편집 : Bill Karwin의 답변 참조 : https : //.com/questions/1962310/importance-of-varchar-length-in-mysql-table


2
SQL Server가 비슷하다고 가정합니까? 나는 ...
AK

죄송합니다. 답변이 불완전하다는 것을 알고 있습니다. 내가 의미하는 바는 그 가정이 틀린 것이 아니라면주의를 기울여야한다는 것입니다 (즉, 성능에 부정적인 영향을 줄 수있는 변경을하지 않음).
Matt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.