2010-05-30 25 views
8

Tôi muốn chia bảng mới cho mỗi người dùng mới trên trang web và tôi giả định rằng sẽ có nhiều người dùng, tôi chắc chắn rằng hiệu suất tìm kiếm sẽ tốt, nhưng với bảo trì là gì ??Bảng mới cho mọi người dùng?

Đây là MySQL không có giới hạn về số lượng bảng.

Cảm ơn rất nhiều.

+3

Tại sao bạn muốn tạo bảng mới cho từng người dùng? –

+1

dính vào bảng người dùng có user_id, tên, email, v.v. Và chỉ cần tạo khóa chính cho user_id của bạn để bạn có thể dễ dàng tìm kiếm người dùng. Nếu bạn tạo một bảng cho mỗi người dùng, bạn sẽ kết thúc với 100 bảng chỉ với một vài thông tin trong mỗi bảng. Lãng phí không gian và gây nhầm lẫn – jpjp

+2

Nó cũng có nghĩa là cung cấp cho người dùng cơ sở dữ liệu mà ứng dụng web đăng nhập dưới dạng đặc quyền "tạo bảng". –

Trả lời

13

Thực tế các bảng cũng được lưu trữ trong bảng. Vì vậy, trong trường hợp này, bạn sẽ di chuyển tìm kiếm trong một bảng người dùng để tìm kiếm trong các bảng hệ thống cho một bảng.

Hiệu suất và khả năng bảo trì sẽ bị ảnh hưởng nghiêm trọng.

9

Tại sao bạn có thể muốn thực hiện việc này? Chỉ cần có một bảng cho mỗi thứ cần một bảng và thêm cột "người dùng". Có một loạt các bảng so với một loạt các hàng sẽ không làm cho hiệu suất của bạn tốt hơn.

4

Để cung cấp cho bạn câu trả lời trực tiếp cho câu hỏi của bạn: việc bảo trì sẽ giảm enthousiasm của bạn với cùng tốc độ mà người dùng mới đăng ký trang web của bạn. Không chắc chắn ngôn ngữ/khung bạn đang sử dụng cho trang web của bạn, nhưng trong giai đoạn này tốt nhất là tìm kiếm một số ví dụ nhỏ trong đó. Dự đoán của chúng tôi là trong mọi ví dụ bạn sẽ tìm thấy, mỗi người dùng mới nhận được một bản ghi trong một bảng, không phải là một bảng trong cơ sở dữ liệu.

6

Đây không phải là một ý tưởng tốt:

  • Số lượng tối đa của bảng là không giới hạn, nhưng bộ nhớ cache bảng là hữu hạn về kích thước, mở bảng là tốn kém. Trong MyISAM, việc đóng một bảng sẽ ném keycache của nó đi. Hiệu suất sẽ hút.
  • Khi bạn cần thay đổi giản đồ, bạn sẽ cần phải thực hiện một ALTER TABLE cho mỗi người dùng, đó sẽ là một nỗi đau không cần thiết
  • Tìm kiếm những thứ không có người dùng cụ thể sẽ bao gồm truy vấn UNION khủng khiếp giữa tất cả hoặc nhiều người dùng bảng
  • Nó sẽ rất khó khăn để xây dựng ràng buộc khoá ngoại một cách chính xác, vì bạn sẽ không có một bảng duy nhất với tất cả các id người dùng trong bất kỳ hơn

tại sao bạn có chắc rằng hiệu suất sẽ được tốt? Bạn đã thử nghiệm nó chưa?

Các vấn đề liên quan