SQL 데이터베이스에서 varchar보다 TEXT를 사용하는 것이 덜 효율적입니까?데이터베이스 : "TEXT"필드가 "varchar"보다 비효율적입니까?
만약 그렇다면 왜?
왜 TEXT를 사용하지 않는 것이 좋을까요?
여기서는 특정 데이터베이스를 대상으로하지는 않지만 오라클은 아마도 관련성이 높습니다. MySQL에 대해 개념 증명의 일부로 테스트 중이지만.
SQL 데이터베이스에서 varchar보다 TEXT를 사용하는 것이 덜 효율적입니까?데이터베이스 : "TEXT"필드가 "varchar"보다 비효율적입니까?
만약 그렇다면 왜?
왜 TEXT를 사용하지 않는 것이 좋을까요?
여기서는 특정 데이터베이스를 대상으로하지는 않지만 오라클은 아마도 관련성이 높습니다. MySQL에 대해 개념 증명의 일부로 테스트 중이지만.
는 마이크로 소프트 here
에서은 ntext, text 및 image 데이터 형식은 Microsoft SQL Server의 이후 버전에서 제거 될 예정입니다. 새로운 개발 에서 이러한 데이터 유형 을 사용하지 마십시오. 현재 사용중인 응용 프로그램 을 수정하십시오. 대신 nvarchar (max), varchar (max) 및 varbinary (max)를 사용하십시오. 텍스트를 통해
varchar(max)
를 사용하는 경우 그들의 작은 대응,varchar,nvarchar and varbinary
과 동일하게 작동하기 때문에
당신은 WHERE
절에 사용할 수 있습니다.
짧은 대답은 : 예, 그들은 덜 효율적입니다.
오래, 더 복잡한 대답은 :
예, 그들은 아마도 덜 효율적이다. 그것은 당신이 사용하고있는 DBMS와 테이블 크기 등에 달려 있습니다. TEXT 필드는 가변 폭이므로 레코드를 찾으려고 할 때 DBMS가 더 많은 작업을해야합니다. 이 성능에 미치는 영향은 DBMS가 얼마나 효율적인지, 테이블 행에 대해 얼마나 많은 데이터를 저장하는지, 그리고 고정 길이 테이블을 최적화하는지 여부에 직접적으로 비례합니다.
MySQL은 고정 길이 테이블 행이 더 빨리 작동한다는 것을 알고 있지만 테이블을 고정 길이 테이블로 먼저 처리 할 수 있다고 말해야합니다. 나는 실제 DBMS와 실제적인 관계를 맺을 수있는 실제적인 경험이 없다. 그러나 많은 레코드가있는 테이블 (100 만 개 이상 읽음)은 중요한 차이를 만들 수 있습니다. 작은 테이블은 실용적인 차이가 거의 없지만.
그건'TEXT'와'CHAR'입니다. OP는'TEXT'와'VARCHAR'를 요구했습니다. – dan04
당신이 말하는 데이터베이스에 대해 구체적으로 밝혀야합니다. 나는 적어도 일부 데이터베이스를 믿는다. TEXT는 테이블 자체와 별도로 CLOB로 저장된다. 이로 인해 표가 작아짐 (양호)하지만 추가 조회가 발생하고 캐시를 가져올 때 오류가 발생할 수 있습니다 (불량).
색인 생성 및 질의 관련 사항이있을 수 있지만 사용중인 특정 RDBMS에 따라 달라질 수 있습니다.
PostgreSQL documentation says :
팁 :로 저장할 때 길이를 확인하기 위해이 빈 패딩 타입을 사용할 때 다음 세 가지 유형의 사이에 성능 차이가 증가 저장 크기에서 떨어져없고, 몇 가지 추가 사이클 길이가 제한된 열. character (n)은 다른 데이터베이스 시스템에서 성능상의 이점이 있지만, PostgreSQL에서는 그러한 장점이 없습니다. 대부분의 상황에서 텍스트 또는 문자를 대신 사용해야합니다.
MySQL의 경우에는 varchar 열에 대해서는 "INDEX READ"가 있고 텍스트 열에 대해서는 항상 "ROW READ"가 있다고 생각합니다. 이로 인해 TEXT 열에서 LIKE 쿼리가 느려집니다. – Till