MySQL 테이블에 URL을 저장해야합니다. 길이가 정해지지 않은 URL을 보유 할 필드를 정의하는 가장 좋은 방법은 무엇입니까?
답변
널리 사용되는 웹 브라우저 중 최소 공통 분모 최대 URL 길이 : 2,083 (Internet Explorer)
http://dev.mysql.com/doc/refman/5.0/en/char.html
VARCHAR 열의 값은 가변 길이 문자열입니다. 길이는 MySQL 5.0.3 이전에는 0에서 255 사이의 값으로, 5.0.3 이상에서는 0에서 65,535 사이의 값으로 지정할 수 있습니다. MySQL 5.0.3 이상에서 VARCHAR의 유효 최대 길이는 최대 행 크기 (모든 열간에 공유되는 65,535 바이트) 및 사용 된 문자 세트에 따라 달라집니다.그래서 …
<MySQL 5.0.3은 TEXT를 사용
하거나
> = MySQL 5.0.3은 VARCHAR을 사용합니다 (2083)
답변
VARCHAR(512)
(또는 유사) 충분해야합니다. 그러나 문제가되는 URL의 최대 길이를 모르기 때문에로 직접 갈 수도 있습니다 TEXT
. 이것의 위험은 물론 CLOB
간단한 문자열 데이터 유형보다 훨씬 느리기 때문에 효율성이 떨어 집니다 VARCHAR
.
답변
varchar(max)
SQLServer2005 용
varchar(65535)
MySQL 5.0.3 이상
이는 필요에 따라 스토리지를 할당하며 성능에 영향을 미치지 않아야합니다.
답변
URL 사용 빈도 및 실제로 길이를 바인딩 해제 해야하는지 여부 에 따라 TEXT 또는 VARCHAR 열 중에서 선택하려고합니다 .
다음 과 같은 경우 micahwittman이 제안한 것처럼 maxlength> = 2,083 인 VARCHAR 을 사용하십시오 .
- 쿼리마다 많은 URL을 사용합니다 (TEXT 열과 달리 VARCHAR은 행과 일렬로 저장 됨)
- URL이 65,535 바이트의 행 제한을 초과하지 않을 것이라고 확신합니다.
다음과 같은 경우 TEXT를 사용하십시오 .
- URL은 실제로 65,535 바이트 행 제한을 초과 할 수 있습니다.
- 검색어는 한 번에 (또는 매우 자주) 여러 URL을 선택하거나 업데이트하지 않습니다. TEXT 열은 포인터를 인라인으로 유지하기 때문에 참조 된 데이터 검색과 관련된 임의의 액세스가 어려울 수 있습니다.
답변
ASCII 문자 인코딩과 함께 VARCHAR을 사용해야합니다. URL은 퍼센트로 인코딩되며 국제 도메인 이름은 punycode를 사용하므로 ASCII로 저장하기에 충분합니다. 이것은 UTF8보다 훨씬 적은 공간을 사용합니다.
VARCHAR(512) CHARACTER SET 'ascii' COLLATE 'ascii_general_ci' NOT NULL
답변
이것은 실제로 사용 사례에 따라 다르지만 (아래 참조) TEXT
성능 문제가있는 상태로 저장하고 VARCHAR
대부분의 경우 과잉 소리와 같은 큰 소리를냅니다.
내 접근 방식 :VARCHAR
과 같이 관대하지만 적당하지 않은 길이를 사용 하지 말고 VARCHAR(500)
더 큰 URL이 필요한 사용자는와 같은 URL 단축기를 사용하도록 권장하십시오 safe.mn
.
트위터 접근 방식 : 정말 멋진 UX를 위해 너무 긴 URL을위한 자동 URL 단축기를 제공하고 링크의 “표시 버전”을 끝에 타원이있는 URL의 스 니펫으로 저장하십시오. (예 : http://stackoverflow.com/q/219569/1235702
로 표시되고 stackoverflow.com/q/21956...
단축 URL에 연결됨 http://ex.ampl/e1234
)
노트와주의 사항
- 분명히 트위터 접근법은 더 좋지만 내 앱의 요구에 따라 URL 단축기를 권장하는 것으로 충분했습니다.
- URL 단축기는 보안 문제와 같은 단점이 있습니다. 필자의 경우 URL이 공개적이지 않고 많이 사용되지 않기 때문에 큰 위험이 아닙니다. 그러나 이것은 분명히 모든 사람에게 적용되지는 않습니다. safe.mn은 많은 스팸 및 피싱 URL을 차단하는 것으로 보이지만 여전히주의를 기울이는 것이 좋습니다.
- 사용자가 URL 단축기를 사용하도록 강요해서는 안됩니다. 대부분의 경우 (적어도 내 응용 프로그램의 요구에 따라) 대부분의 사용자가 사용하는 것에 500 자로 충분합니다. 너무 긴 링크에는 URL 단축기를 사용 / 권장하십시오.
답변
대부분의 브라우저는 URL 에 매우 많은 양의 데이터 를 넣을 수있게 하므로 많은 것들이 매우 큰 URL을 생성하게되므로 URL의 도메인 부분 이외의 것에 대해 이야기하는 경우 TEXT 열을 사용해야합니다. VARCHAR / CHAR은 제한되어 있습니다.