created at 2024-09-04
Table of contents
MYSQL
- VARCHAR vs CHAR 타입 차이
- VARCHAR : 가변길이로 되어있고 공백으로 채워지지 않음.
- CHAR : 고정길이로 되어있고 공백으로 채워짐. 인덱싱해서 검색할 때 빠름.
- VARCHAR vs TEXT 타입 차이
- VARCHAR : row 에 직접 저장. 전체 인덱싱 가능.
- TEXT : row 에 저장하는게 아닌 따로 저장해놓고 포인터를 행에 저장. 그래서 max row size 보다 큰 텍스트를 저장할 때 사용. 당연히 엄청난 크기의 텍스트를 인덱싱하는건 불가능하고 앞에 m 바이트만 인덱싱함.
CREATE INDEX
message_idx
ON
comm_database(message);
위의 sql 은 에러남.
ERROR 1170 (42000): BLOB/TEXT column 'message' used in key specification without a key length
CREATE INDEX
message_idx
ON
comm_database(message(30));
위의 sql 은 정상적으로 작동함. 앞의 30 바이트만 인덱싱한다. prefix indexes
로 부름.
그런데 이 긴 TEXT 를 서칭할 일이 있을까?
reference
- https://stackoverflow.com/questions/25300821/difference-between-varchar-and-text-in-mysql