하나의 큰 테이블이 아니라 많은 테이블을 가지고있는 것이 단점입니까 (~ 100,000). user_id가 인덱스 인 모든 사용자에 대해 사용자 당 하나의 테이블 또는 하나의 큰 테이블을 갖는 예가 있습니다.많은 MySQL 테이블을 가지고있는 단점은 무엇입니까?
예. stuff
라는 이름의이 중 하나
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| user_id | int(11) | YES | | NULL | |
| x | int(11) | YES | | NULL | |
| y | int(11) | YES | | NULL | |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
대 각각 [user_id]_stuff
라는 곳이 많은. 그렇게하면 user_id가 주어진 테이블을 알 수 있습니다.
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| x | int(11) | YES | | NULL | |
| y | int(11) | YES | | NULL | |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
많은 테이블을 가지고있는 것이 더 빠르지 만 하나의 테이블을 가지고 있으면 유지 관리가 쉽다는 단언이 있습니다.
또한 사용자의 ID가 연결되어 테이블 이름을 만들기 때문에 보안 문제가 발생합니까? 제공된 ID가 숫자인지 쉽게 확인할 수 있습니다.
100k 개의 테이블에 대한 쿼리는 어떻게됩니까? – Strawberry
각 사용자에 대해 하나의 표를 사용하여 정규화 원칙을 위반합니다. 나는 당신이 정상화에 대해 읽을 것을 촉구 할 것입니다. 데이터베이스는 * 많은 * 데이터를 처리하도록 설계되었습니다. – Kermit
@FreshPrinceOfSO는 : 현학적으로 의도하지 만, 참고로 이러한 디자인은 실제로 정상화 원칙을 위반하지 것 - 그것은 [직교 디자인의 원리 (http://en.wikipedia.org/wiki/Principle_of_Orthogonal_Design) 위반합니다. – eggyal