2013-02-16 2 views
4

나는 mysql을 처음 사용했다 & 나는 나의 첫번째 php-mysql 애플리케이션을 코딩했다.mysql 테이블 행 제한?

사용자가 선호하는 장치를 자신의 계정에 추가하기를 원하는 장치 목록이 30 개 있습니다.

그래서, MySQL의 테이블을 만들어 "A"일부 장치 ID의이

UserID | Device Id 

1  | 33 
1  | 21 
1  | 52 
2  | 12 
2  | 45 
3  | 22 
3  | 08 
1  | 5 
more..... 

말처럼 특정 사용자 ID에 저장되는 경우, 나는 5000 사용자 식별자 & (30) 장치-ID를 가지고있다.

& 각 사용자가 자신의 계정 레코드 아래에 평균 15 개의 장치 ID를 가지고있는 경우.

그런 다음 표에서 5000 X 15 = 75000 기록 될 것 "A"

그래서, 내 질문에, 우리는 MySQL의 테이블에 저장할 수있는 레코드 수에 어떤 제한이 있습니까?

위에서 언급 한 레코드를 저장하기위한 나의 접근 방식이 맞습니까? 더 많은 사용자가 추가되면 쿼리 성능에 영향을 미치는지 여부

또는이를 수행하는 더 좋은 방법이 있습니까?

+0

"수백만"의 한계를 초과하지 않습니다 -

는 원자와 정상적인 유지. 정말 호기심이 있다면 [* 문서를 읽으십시오] (http://dev.mysql.com/doc/refman/5.0/en/limits.html). –

+0

RTLM : http://dev.mysql.com/doc/refman/5.6/en/table-size-limit.html –

+0

@YogeshSuthar : 댓글 만 -1 일 수있는 경우. 바보 같은 생각. 그런 식의 테이블을 비정규 화하는 것은 결코 좋은 생각이 아닙니다. –

답변

3

두 개의 정수 만있는 MySQL 테이블의 한계에 접근하는 것은 거의 불가능합니다.

쿼리 성능에 대해 정말로 염려가되는 경우 두 가지 열에 모두 색인을 생성하면됩니다. 기기 ID에 대한 색인이 있어도 테이블을 삽입/업데이트하는 비용은 무시할 수 있습니다. 데이터베이스가 커지면 "이 장치를 선호하는 사용자"와 같은 쿼리의 속도를 높일 수 있습니다. "이 장치를 선호하는 장치"를 물어 보는 쿼리는 사용자의 색인을 사용하면 빠릅니다.

이 테이블에 두 부분으로 구성된 복합 키 (색인)가있는 간단한 두 개의 열 테이블을 만들라고 말합니다. 이렇게하면 가능한 한 원자 적이며 일부 사람들이 "성능을 향상"하기 위해 제안 할 수있는 뻔뻔 스러움을 필요로하지 않을 것입니다. 성능이 될 것입니다 그리고 당신은 당신의 DBMS

1

아무 문제가 없습니다. 서버 공간을 절약하기를 원한다면 걱정하지 마십시오. 데이터베이스가 기본 작업을 수행하게하십시오. ID - int(10) primary auto increment으로 데이터베이스의 색인을 올바르게 지정하십시오. 필요할 때 확장성에 대해 생각해보십시오. 첫 번째 목표는 작성중인 애플리케이션을 완료하는 것입니다. 그런 다음 테스트하십시오. 어떤 지연, 문제를 일으킨다는 것을 알게되면, 문제를 해결하는 것에 대해 걱정하기 시작하십시오. 아마 심지어 직면하지 않을지도 모르는 일로 자신을 괴롭히지 마십시오.

그러나 응용 프로그램의 규모 (75k - 1lac 레코드)를 고려할 때 많은 작업이 필요하지 않습니다. 또는 당신은 당신의 사용자를 위해이 같은 스키마를 가질 수

(device_table) 배열에 device_ids를 저장하고

$device_for_user=explode(',',$device_id) 

의로 특정 사용자에 대한 DEVICE_ID을 받고있다

device_id 
23 
45 
56 

user_id | device_id 
1  | 23,45,67,45,23 
2  | 45,67,23,45 

course device_id는 mysql 데이터베이스에서 검색된다. 그래서 너는 가질거야

$device_for_user[0]=23 
$device_for_user[1]=45 

amd 등등.

그러나이 방법은 아주 좋은 디자인이나 접근 방식이 아닙니다. 그러나 귀하의 정보를 위해서이 방법을 사용하는 것입니다.

+0

-1은 비정규 화를 위해 그리고 db가 원하는 방식으로 작동하지 않도록합니다. –