2009-02-07 5 views
3

A, B ... X, Y, Z라는 값 배열이 있습니다. 테이블에 26 개의 열이있을 수는 있지만 재미는 없습니다. 더 좋은 방법. 첫 번째 테이블에서 행의 id 값, 배열의 항목 ID 및 부울 값을 가진 두 번째 테이블을 만드는 것을 고려해 보았지만 복잡하고 혼란스러워 보입니다.MySQL에 이진 배열 저장

더 좋은 방법이 있습니까?

답변

6

짧은 대답, 아니요. 긴 대답, 그것은 달려있다.

숫자를 잘못 사용하거나, Binary 또는 VARBINARY를 사용하거나, BLOB 또는 TINYBLOB을 사용하여 이진 데이터를 저장할 수 있습니다. 데이터가 알려진 크기라면 BINARY 유형은 일반적으로 BLOB 유형보다 빠릅니다 .

그러나 관계형 데이터베이스는 이진 데이터로 지능적인 작업을 수행하도록 설계되지 않았습니다. 작업하던 프로젝트에서 각 레코드가 특정 바이너리 패턴 (일종의 정수로 저장되어 있음)으로 검색하고 AND, OR, XOR 및 NOT을 많이 필요로하는 테이블이있었습니다. 정말 잘 돌아 가지 않았고 성능이 빨려 전체 프로젝트를 중단 시켰습니다. 되돌아 보면 나는 완전히 다른 접근법을 취했을 것이다.

데이터를 삭제 한 다음 다시 꺼내려는 경우 좋습니다. 지능적이고 힘든 무엇이든 그것을 사용하고 싶다면.

상황은 다른 데이터베이스 공급 업체에서 다를 수 있습니다. 사실, 데이터베이스 대신 다른 것을 사용 해본 적이 있습니까? 어떤 종류의 객체 지속성?

1

TINYBLOB 또는 UNSIGNED INT로 저장하려고 할 수 있지만 코드에서 비트 마스크를 수행해야합니다.

1

문자열로 저장하고 텍스트 조작 함수를 사용하여 배열을 다시 작성할 수 있습니다.

2

가능한 배열 값이 정적입니까?

그렇다면 MySQL의 SET 데이터 형식을 사용해보십시오.