Tôi bây giờ đến thời điểm này của dự án của tôi mà tôi cần phải thiết kế cơ sở dữ liệu của tôi (Oracle). Thông thường đối với các bảng trạng và nước tôi không sử dụng một khóa chính số, ví dụSố VS Varchar (2) Các khóa chính
STATUS (max 6)
AC --> Active
DE --> Deleted
COUNTRIES (total 30)
UK --> United Kingdom
IT --> Italy
GR --> Greece
Các bảng này được tĩnh, không được cập nhật thông qua ứng dụng và nó không lường trước được sự thay đổi trong tương lai để có không có cơ hội có vấn đề cập nhật trong bảng sẽ sử dụng các giá trị này như là khóa ngoài.
Bảng chính của ứng dụng sẽ sử dụng vị thế và nước (nhiều hơn một lần ví dụ như nước xuất xứ, quốc gia đến) và nó được dự kiến rằng 600000 hàng sẽ được bổ sung mỗi năm
Vì vậy, câu hỏi của tôi là, sẽ những VARCHAR (2) phím sẽ có tác động trong hiệu suất khi truy vấn tham gia có 3 bảng. Đầu tiên có chậm hơn đáng kể so với giây không?
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 'AC'
AND m.country_cd = 'UK'
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 1
AND m.country_cd = 2
Làm rõ:
Tình trạng không phải là nhị phân ("max 6" bên cạnh tên bảng). Các giá trị có thể là:
* active
* deleted
* draft
* send
* replaced
và chúng tôi cần hiển thị giá trị được giải mã cho người dùng, vì vậy chúng tôi cần tên.
Bạn đang sử dụng VARCHAR2 trong Oracle, hoặc VARCHAR (2)? Nếu sử dụng Oracle VARCHAR2, thì các dấu ngoặc đơn sẽ gây hiểu nhầm. Nếu VARCHAR (2), thì tại sao không CHAR (2) thường hiệu quả hơn. –