Bạn vẫn cần lập chỉ mục sau khi chuẩn hóa cơ sở dữ liệu


14

Sau khi bạn đã thực hiện một chuẩn hóa tốt, bạn vẫn cần lập chỉ mục bảng? Làm thế nào điều này sẽ ảnh hưởng đến hiệu suất? Nó thậm chí sẽ ảnh hưởng đến hiệu suất theo một cách nào đó sau khi bình thường hóa tốt?

Những cột nào thường được lập chỉ mục nếu bạn đã có khóa chính và khóa ngoại?

Có vẻ như nó đã có hiệu quả để bình thường hóa cơ sở dữ liệu. Nhưng, tôi có thể đã bỏ qua việc lập chỉ mục ảnh hưởng đến cơ sở dữ liệu. Điều này chỉ hiệu quả khi các truy vấn được sử dụng? Làm thế nào để điều này làm việc / thực hiện và làm cho một cơ sở dữ liệu tốt hơn?


5
Những cột nào thường được lập chỉ mục nếu bạn đã có khóa chính và khóa ngoại? Ngày. Tên. Bất cứ điều gì bạn có thể cần phải tìm kiếm hoặc sắp xếp trên.
Carson63000

Chỉ số trên khóa chính không được tính?
CodeInChaos

Câu trả lời:


34

Đúng. Trong thực tế, bạn rất có thể cần phải chú ý nhiều hơn đến các chỉ số của bạn. Bình thường hóa là về lưu trữ tối ưu . Điều đó thường mâu thuẫn với tốc độ truy xuất , vì các truy vấn phức tạp hơn với các phép nối phức tạp được sử dụng. Đôi khi, những người duy trì cơ sở dữ liệu yêu cầu tốc độ truy xuất nhanh sẽ khử chuẩn hóa hoặc sắp xếp dữ liệu của họ trong các cấu trúc ít chuẩn hóa hơn để giúp truy xuất dễ dàng hơn.


21
Mục tiêu của chuẩn hóa không phải là hiệu quả lưu trữ, mà là loại bỏ các phụ thuộc chèn, cập nhật và xóa. Đọc thêm

4
Tôi đồng ý với @MichealT rằng đó không phải là về hiệu quả. Tính nhất quán hợp lý là những gì tôi nhận được từ liên kết.
JeffO

Tôi sẽ xóa từ 'hiệu quả' gây tranh cãi (mặc dù tôi nghĩ rằng về cơ bản tổng hợp mục đích chung của bình thường hóa) và chỉ sử dụng từ 'tối ưu' thay vào đó, để lại những gì có nghĩa cho người đọc. Mục đích thực sự của chuẩn hóa không thực sự phù hợp với lý do tại sao các chỉ mục vẫn cần thiết sau khi cơ sở dữ liệu được chuẩn hóa.
GrandmasterB

56

Tôi nghĩ rằng bạn đã hiểu nhầm những gì lập chỉ mục cho hiệu suất cơ sở dữ liệu.

Một chỉ mục giúp cơ sở dữ liệu tìm hàng. Các chỉ mục là các cấu trúc dữ liệu chuyên biệt, để đổi lấy không gian đĩa thêm và một số hiệu suất khi chèn và cập nhật, giúp công cụ cơ sở dữ liệu tập trung vào các hàng khớp.

Vì chúng cần thêm không gian và chi phí (một mô-đun) để cập nhật chúng, nên bạn là người thiết kế cơ sở dữ liệu phải tạo các chỉ mục rõ ràng để phù hợp với mẫu ứng dụng và truy vấn của bạn.

Các chỉ mục là trực giao để chuẩn hóa cơ sở dữ liệu.


4

Có sau khi bình thường hóa bạn vẫn cần lập chỉ mục.

Các bảng bạn đang làm việc có lợi ích tương đương với các bảng bạn đã có trước khi chuẩn hóa. Trên thực tế, bản thân chúng cũng giống nhau: các bảng.

Một điều bạn phải xem xét mặc dù, các chỉ mục giúp bạn tìm đường đi qua dữ liệu của mình nhanh hơn. Bình thường hóa thiết kế cơ sở dữ liệu luôn tốt, nhưng đôi khi vì lý do hiệu năng, bạn phải không chuẩn hóa việc thực hiện. Nhưng đó chỉ là trên cơ sở từng trường hợp.


2

Đúng.

Các chỉ số là một phương pháp để tăng tốc độ tìm kiếm dữ liệu. Một số truy vấn là bởi các khóa chính, thường được lập chỉ mục ngầm định bởi công cụ cơ sở dữ liệu, nhưng các truy vấn khác có thể sử dụng các cột khác. Thông thường một số truy vấn tìm kiếm theo các cột thậm chí không phải là duy nhất và do đó không thể trở thành khóa chính sau bất kỳ chuẩn hóa nào. Bạn có thể sẽ phải lập chỉ mục các cột như vậy.

Chỉ có một cách để biết chỉ số nào sẽ tạo. Mang tất cả các truy vấn trong việc áp dụng, tìm các thông số ví dụ đại diện cho họ và có cơ sở dữ liệu cho thấy kế hoạch truy vấn của họ (tất cả các cơ sở dữ liệu có EXPLAIN, EXPLAIN QUERY PLANhoặc lệnh tương tự, nó được gọi là khác nhau trong công cụ khác nhau) và thử nghiệm bao lâu họ thực hiện. Hơn tạo ra các chỉ số tăng tốc những cái chậm. Và đừng quên thả lại các chỉ số mà bạn đã thử nhưng không giúp tránh lãng phí tài nguyên.


1

Các chỉ mục thường cần thiết trong tất cả trừ các bảng nhỏ nhất. Khá nhiều khóa ngoại nên được lập chỉ mục và chỉ cần thiết lập FK không có nghĩa là bạn có một chỉ mục (ít nhất là không có trong một số cơ sở dữ liệu, hãy kiểm tra tài liệu db của bạn). Các lĩnh vực bạn thường tham gia hoặc sử dụng trong đó các mệnh đề nên được lập chỉ mục nếu chúng là những điều có lợi (bạn cần một lượng sai lệch nhất định trong dữ liệu để Booleans không có lợi) và những nơi có thể lập chỉ mục.

Tuy nhiên, mọi chỉ mục làm chậm việc chèn \ update \ xóa trong khi tăng tốc các lựa chọn, vì vậy hãy chọn các chỉ mục của bạn một cách cẩn thận.

Các chỉ mục rất quan trọng đối với hiệu suất chấp nhận được trong cơ sở dữ liệu.


0

Đối với dạng bình thường thứ ba, bạn chắc chắn sẽ cần các chỉ mục trên tất cả các khóa chính.

Việc bạn cần bất kỳ chỉ mục nào khác tùy thuộc vào cách sử dụng cơ sở dữ liệu của bạn. Ví dụ: nếu bạn thường xuyên tìm kiếm khách hàng trong một mã ZIP cụ thể, thì có lẽ nên lập chỉ mục cột zip_code trong bảng khách hàng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.