Tôi không phải là anh chàng db. Nhưng tôi cần phải tạo ra các bảng và thực hiện các hoạt động CRUD trên chúng. Tôi bị nhầm lẫn nên tôi tạo chỉ mục trên tất cả các cột theo mặc định hay không? Đây là sự hiểu biết của tôi mà tôi xem xét khi tạo chỉ mục.Quyết định khi nào tạo chỉ mục trên cột bảng trong cơ sở dữ liệu?
Chỉ mục cơ bản chứa phạm vi vị trí bộ nhớ (bắt đầu vị trí bộ nhớ trong đó giá trị đầu tiên được lưu trữ để kết thúc vị trí bộ nhớ có giá trị cuối cùng là được lưu trữ). Vì vậy, khi chúng ta chèn bất kỳ giá trị nào trong chỉ mục bảng cho cột cần được cập nhật vì nó có thêm một giá trị nhưng việc cập nhật giá trị cột sẽ không ảnh hưởng đến giá trị chỉ mục. Phải không? Vì vậy, dòng dưới cùng là khi cột của tôi được sử dụng để nối giữa hai bảng, chúng ta nên xem xét tạo chỉ mục trên cột được sử dụng trong tham gia, nhưng tất cả các cột khác có thể bị bỏ qua vì nếu chúng ta tạo chỉ mục trên cột, nó sẽ có thêm chi phí khi giá trị mới được chèn vào cột. Phải không?
Hãy xem xét trường hợp này trong đó bảng mytable
chứa hai ba cột, nghĩa là col1
, col2
, col3
. Bây giờ chúng tôi kích hoạt truy vấn này
select col1,col2 from mytable
Bây giờ có hai trường hợp ở đây. Trong trường hợp đầu tiên, chúng tôi tạo chỉ mục trên col1
và col2
. Trong trường hợp thứ hai chúng ta không tạo ra chỉ mục nào. ** Theo hiểu biết của tôi, trường hợp 1 sẽ nhanh hơn case2 vì trong trường hợp 1 chúng ta có thể tìm nhanh vị trí bộ nhớ cột. Vì vậy, ở đây tôi đã không sử dụng bất kỳ cột tham gia nhưng vẫn chỉ mục đang trợ giúp ở đây. Vì vậy, nên tôi xem xét việc tạo index ở đây hay không? **
gì nếu trong kịch bản tương tự trên nếu chúng ta bắn
select * from mytable
thay vì
select col1,col2 from mytable
Will chỉ số trợ giúp ở đây?
Chỉ mục không làm bất cứ điều gì cho các giá trị trong mệnh đề SELECT. Điều quan trọng là danh sách các trường trong mệnh đề ON của bạn hoặc mệnh đề WHERE của bạn. – Bill
@Bill - Oracle không sử dụng các chỉ mục bao gồm khi nó có thể? Tôi là một anh chàng SQL Server và tôi biết rằng Oracle xử lý các chỉ mục một chút khác nhau, nhưng tôi nghĩ rằng trong một số trường hợp nó vẫn sử dụng các chỉ mục bao gồm. –
@Tom: Huh. Học điều mới mỗi ngày. Tôi cũng là một anh chàng MSSQL và không biết điều này. Tuy nhiên, nó có vẻ như bao gồm chỉ số chỉ hữu ích nếu bạn đang làm rất nhiều R và không có nhiều CUD. – Bill