2008-10-16 2 views
9

SQL 데이터베이스에서 varchar보다 TEXT를 사용하는 것이 덜 효율적입니까?데이터베이스 : "TEXT"필드가 "varchar"보다 비효율적입니까?

만약 그렇다면 왜?

왜 TEXT를 사용하지 않는 것이 좋을까요?

여기서는 특정 데이터베이스를 대상으로하지는 않지만 오라클은 아마도 관련성이 높습니다. MySQL에 대해 개념 증명의 일부로 테스트 중이지만.

+0

MySQL의 경우에는 varchar 열에 대해서는 "INDEX READ"가 있고 텍스트 열에 대해서는 항상 "ROW READ"가 있다고 생각합니다. 이로 인해 TEXT 열에서 LIKE 쿼리가 느려집니다. – Till

답변

4

는 마이크로 소프트 here

에서

은 ntext, text 및 image 데이터 형식은 Microsoft SQL Server의 이후 버전에서 제거 될 예정입니다. 새로운 개발 에서 이러한 데이터 유형 을 사용하지 마십시오. 현재 사용중인 응용 프로그램 을 수정하십시오. 대신 nvarchar (max), varchar (max) 및 varbinary (max)를 사용하십시오. 텍스트를 통해 varchar(max)를 사용하는 경우 그들의 작은 대응, varchar,nvarchar and varbinary과 동일하게 작동하기 때문에

당신은 WHERE 절에 사용할 수 있습니다.

  • 사용 VARCHAR (최대) 대신 대신 NTEXT
  • 사용 VARBINARY의 텍스트
  • 사용 NVARCHAR (최대)의 (최대 : 다음은 사용할 수 있었는지 반대 표기 무엇의 작은 목록입니다) 대신 이미지
1

짧은 대답은 : 예, 그들은 덜 효율적입니다.

오래, 더 복잡한 대답은 :

예, 그들은 아마도 덜 효율적이다. 그것은 당신이 사용하고있는 DBMS와 테이블 크기 등에 달려 있습니다. TEXT 필드는 가변 폭이므로 레코드를 찾으려고 할 때 DBMS가 더 많은 작업을해야합니다. 이 성능에 미치는 영향은 DBMS가 얼마나 효율적인지, 테이블 행에 대해 얼마나 많은 데이터를 저장하는지, 그리고 고정 길이 테이블을 최적화하는지 여부에 직접적으로 비례합니다.

MySQL은 고정 길이 테이블 행이 더 빨리 작동한다는 것을 알고 있지만 테이블을 고정 길이 테이블로 먼저 처리 할 수 ​​있다고 말해야합니다. 나는 실제 DBMS와 실제적인 관계를 맺을 수있는 실제적인 경험이 없다. 그러나 많은 레코드가있는 테이블 (100 만 개 이상 읽음)은 중요한 차이를 만들 수 있습니다. 작은 테이블은 실용적인 차이가 거의 없지만.

+0

그건'TEXT'와'CHAR'입니다. OP는'TEXT'와'VARCHAR'를 요구했습니다. – dan04

1

당신이 말하는 데이터베이스에 대해 구체적으로 밝혀야합니다. 나는 적어도 일부 데이터베이스를 믿는다. TEXT는 테이블 자체와 별도로 CLOB로 저장된다. 이로 인해 표가 작아짐 (양호)하지만 추가 조회가 발생하고 캐시를 가져올 때 오류가 발생할 수 있습니다 (불량).

색인 생성 및 질의 관련 사항이있을 수 있지만 사용중인 특정 RDBMS에 따라 달라질 수 있습니다.

2

PostgreSQL documentation says :

팁 :로 저장할 때 길이를 확인하기 위해이 빈 패딩 타입을 사용할 때 다음 세 가지 유형의 사이에 성능 차이가 증가 저장 크기에서 떨어져없고, 몇 가지 추가 사이클 길이가 제한된 열. character (n)은 다른 데이터베이스 시스템에서 성능상의 이점이 있지만, PostgreSQL에서는 그러한 장점이 없습니다. 대부분의 상황에서 텍스트 또는 문자를 대신 사용해야합니다.

관련 문제