Tôi có một thiết kế cơ sở dữ liệu ở đây trông này trong phiên bản đơn giản:PHP/MySQL: Truy vấn SQL lớn hoặc một số truy vấn nhỏ hơn?
Bảng building
:
- id
- attribute1
- attribute2
dữ liệu trong đó cũng giống như:
- (1, 1, 1)
- (2, 1, 2)
- (3, 5, 4)
Và các bảng, attribute1_values
và attribute2_values
, cấu trúc như:
- id
- giá trị
nào chứa thông tin như:
- (1, "mô tả nguyên bản của phương án 1")
- (2, "mô tả nguyên bản của phương án 2")
- ...
- (6, "mô tả nguyên bản của tùy chọn 6")
Tôi không chắc liệu đây có phải là thiết lập tốt nhất hay không, nhưng được thực hiện theo yêu cầu của người quản lý dự án của tôi. Nó chắc chắn có một số sự thật trong nó như bạn có thể sửa đổi các văn bản một cách dễ dàng ngay bây giờ mà không làm rối tung id của.
Tuy nhiên bây giờ tôi đã đến một trang mà tôi cần liệt kê các thuộc tính, vậy làm thế nào để tôi đi về đó? Tôi thấy hai tùy chọn chính:
1) Thực hiện một truy vấn lớn tập hợp tất cả các giá trị từ building
và đồng thời chọn biểu diễn văn bản chính xác từ bảng attribute{x}_values
.
2) Thực hiện truy vấn nhỏ tập hợp tất cả các giá trị từ bảng building
. Sau đó, sau đó nhận được các đại diện văn bản của từng thuộc tính một tại một thời điểm.
Tùy chọn tốt nhất để chọn là gì? Có phải tùy chọn 1 thậm chí còn nhanh hơn tùy chọn 2 không? Nếu vậy, liệu nó có đáng giá thêm rắc rối liên quan đến bảo trì?
Một truy vấn cơ sở dữ liệu đơn thường là rất nhiều hiệu quả hơn nhiều truy vấn, và nên được ít mã như cũng –
@MarkBaker Có có thể lên đến 20 thuộc tính mặc dù ... Bất kỳ lý do gì để có một quan điểm khác nhau sau đó? – skiwi
Càng nhiều thuộc tính, càng có nhiều lý do để sử dụng một truy vấn thay vì 20 truy vấn riêng lẻ - chi phí thời gian để thực hiện truy vấn cao hơn rất nhiều so với chi phí thời gian để lặp qua kết quả, do đó, 20 truy vấn mà mỗi kết quả trả về 1 gần như chắc chắn chậm hơn rất nhiều so với 1 truy vấn trả về 20 kết quả –