2010-12-21 5 views
0

저는 mysql을 처음 접했고 새로운 데이터베이스를위한 mysql 데이터베이스 구조에 관한 선택권이 있습니다. 내가 가질 수mysql에 많은 텍스트 열 또는 정수 열과 새 테이블이 있습니까?

표 (ID, 텍스트 1, 텍스트 2, 텍스트 3, 텍스트 4, 최대 text7에)

또는

표 (ID, INT1, INT2, INT3 ... 최대를 int7)를 INT 값이

표 2 테이블이 고유 인덱스에 링크 여기서 (ID2, 텍스트)

그래서 기본적으로해야 내가 한 테이블에 하나의 테이블 또는 saparate 저장 지수 값의 열에서 모든 텍스트를 넣어 그리고 두 번째 테이블의 텍스트 데이터 ... 쿼리는 ID 코드가 부여됩니다, 다시 문자열 1을 텍스트 7로 바꿉니다. 약 1 백만 ID에 대한 테이블이 커집니다 (방법 2가 사용되는 경우 테이블 2는 7 백만 개 항목을 의미합니다)

귀하의 의견으로는 어떤 방법이 더 빠릅니까?

EDIT1 : 각 텍스트 길이는 250 자입니다. EDIT2 : 명확히하기 위해 ID를 부여 받았고 테이블에 대한 쿼리는 해당 ID에 대해 7 개의 텍스트 항목을 모두 얻게됩니다. 이것은 테이블에서 수행 할 수있는 유일한 쿼리이며 필요한 유일한 정보입니다. 어떤 것이 더 빨리 사용되는지 알아야합니다. 둘 다 아니라면 더 나은 방법을 제공해주세요!

+0

안녕하세요, 선택 방법에 따라 다릅니다 (항상 7 개 또는 각각 독립적으로). 텍스트 필드를 검색해야하는 경우 두 번째 색인을 사용하십시오 (하나의 색인은 모든 데이터를 규정합니다). 그건 내 생각이야. 하지만 세 번째 테이블 (연관)을 사용하여 텍스트를 ID로 선택합니다. –

답변

0

텍스트를 기반으로 쿼리하지 않으면 속도가 변경되지 않습니다. 간단하고 1 개의 테이블 만 사용하면됩니다. 텍스트로 쿼리해야하는 경우 텍스트를 변경하려고합니다.

1

더 많은 정보를 제공하고 저장하는 것을 알려주십시오.

그러나 관계형 데이터베이스의 단일 레코드에 같은 "물건"을 두 개 이상 저장하는 것은 대개 잘못된 방법입니다. 두 가지 모두 제안 된 솔루션은 단일 레코드에 7 가지를 저장하는 것이므로 처음에는 좋은 해결책이 아닌 것으로 보입니다.

"올바른"해결책 (특별한 조건이없는 경우)은 700 만 개의 항목이있는 하나의 표를 갖는 것입니다.

누군가가 당신에게 정수 ID가있는 별도의 행에 텍스트 값을 저장하여 "정상화"해야한다고 제안했기 때문에 두 번째 해결책을 생각하고 있습니까? 그렇다면, 나는 그들이 당신이 의미하는 것을 완전히 이해했다고 생각하지 않습니다. 지정된 솔루션은 데이터베이스를 표준화하지 않고 단 하나 (불필요한) 수준의 간접 참조를 추가합니다.

절대적으로 비정규 화 솔루션을 사용해야하는 경우 하나의 레코드에있는 모든 문자열이 정수 ID의 복잡성을 더한 것보다 낫습니다.

+0

나는 텍스트를 기반으로하는 열이 많이있는 경우 테이블을 읽는 것이 더 느리다는 것을 인터넷에서 읽었습니다. (그렇습니다. 저는 절대 초보자입니다. 그래서 이것이 사실인지는 모르겠지만 이해가가는 것 같습니다.) 따라서 정수 열이 빠르다고 가정했습니다. 고유 ID를 기반으로 검색하는 경우 차이가 있습니까? 나는 내가 정말로 물어야 만했던 질문이 맞을 것이라고 생각한다. – David19801

+1

@ David19801 : 디자인의 초기 단계에서 그 수준의 최적화에 대해 걱정할 필요가 없습니다. 작동하는 무언가를 만들고 최적화하십시오. 작동이 끝나면 실제로 일어날 필요가있는 것을 완전히 이해할 수 있습니다. – wallyk

+0

자신보다 앞서 가고 있습니다.먼저 데이터베이스 구조가 데이터를 올바르게 나타내야합니다. 올바른 표현은 시스템을 기반으로하는 기초로서 성능보다 중요하며, 종종 가장 효과적인 옵션이기도합니다. 데이터를 더 잘 설명하면 모델을 작성하는 방법에 대한 더 나은 조언을 얻을 수 있습니다. –

관련 문제