Một câu trả lời mang tính triết lý:Cơ sở dữ liệu dưới mức tối ưu (quan hệ) đầy rẫy những điểm bất thường chèn, cập nhật và xóa. Tất cả những điều này đều dẫn đến dữ liệu không nhất quán, dẫn đến chất lượng dữ liệu kém. Nếu bạn không thể tin tưởng vào độ chính xác của dữ liệu của mình, thì điều đó có ích lợi gì? Hãy tự hỏi mình điều này:Bạn muốn câu trả lời đúng chậm hơn hay bạn muốn câu trả lời sai nhanh hơn?
Một vấn đề thực tế:hãy làm ngay trước khi bạn đạt được nhanh. Con người chúng ta rất tệ trong việc dự đoán vị trí tắc nghẽn sẽ xảy ra. Làm cho cơ sở dữ liệu trở nên tuyệt vời, đo lường hiệu suất trong một khoảng thời gian thích hợp, sau đó quyết định xem bạn có cần làm cho nó nhanh hơn hay không. Trước khi bạn không chuẩn hóa và hy sinh độ chính xác, hãy thử các kỹ thuật khác:bạn có thể nhận được máy chủ, kết nối, trình điều khiển db, v.v. nhanh hơn không? Các thủ tục được lưu trữ có thể tăng tốc mọi thứ không? Các chỉ số và hệ số lấp đầy của chúng như thế nào? Nếu những thứ đó và các kỹ thuật điều chỉnh và hiệu suất khác không thực hiện được thủ thuật, thì chỉ cần xem xét việc không chuẩn hóa. Sau đó, đo hiệu suất để xác minh rằng bạn đã nhận được sự gia tăng tốc độ mà bạn đã "trả tiền". Đảm bảo rằng bạn đang thực hiện tối ưu hóa, không phải bi quan.
[sửa]
A:Chắc chắn rồi.
- Tạo một bản sao lưu.
- Tạo một bản sao lưu khác vào một thiết bị khác.
- Tạo bảng mới với lệnh nhập "select into newtable from oldtable ...". Bạn sẽ cần thực hiện một số phép nối để kết hợp các bảng riêng biệt trước đó.
- Bỏ các bảng cũ.
- Đổi tên các bảng mới.
NHƯNG ... hãy xem xét một cách tiếp cận mạnh mẽ hơn:
Tạo một số chế độ xem trên các bảng được chuẩn hóa hoàn toàn của bạn ngay bây giờ. Các khung nhìn đó (bảng ảo, "cửa sổ" trên dữ liệu ... hãy hỏi tôi nếu bạn muốn biết thêm về chủ đề này) sẽ có cùng một truy vấn xác định như bước ba ở trên. Khi bạn viết ứng dụng của mình hoặc logic lớp DB, hãy sử dụng các khung nhìn (ít nhất là để truy cập đọc; các khung nhìn có thể cập nhật được ... tốt, bạn quan tâm). Sau đó, nếu sau này bạn không chuẩn hóa lại, hãy tạo một bảng mới như trên, bỏ dạng xem, đổi tên bảng cơ sở mới bất kể dạng xem đó là gì. Ứng dụng / lớp DB của bạn sẽ không biết sự khác biệt.
Thực tế còn nhiều điều về điều này trong thực tế, nhưng điều này sẽ giúp bạn bắt đầu.