2010-03-02 58 views
10

Khi tôi tạo chỉ mục cho bảng trong mysql, tôi thấy rằng chỉ mục index_type là loại BTREE. Bây giờ mặc dù tôi hiểu về btree (s), tôi không im lặng hiểu cách nó lưu trữ chỉ mục và cách cơ sở dữ liệu tìm kiếm các bản ghi dựa trên điều này.cách lập chỉ mục B-tree hoạt động trong mysql

Ý tôi là, btree là tuyệt vời để cơ sở dữ liệu thực hiện đọc và ghi khối dữ liệu lớn, khi chúng tôi tạo chỉ mục cho loại cột Primary key, điều tôi hiểu là nó tạo cây và chia tách giá trị cho gốc dựa trên loại giá trị của gốc.

Hiện tại, chỉ lưu trữ khóa chính ID dưới cây hoặc toàn bộ dữ liệu được liên kết với khóa chính đó?

Sau khi tìm ID chính muốn, cơ sở dữ liệu trích xuất bản ghi như thế nào?

Trả lời

20

Cơ sở dữ liệu lưu trữ giá trị được lập chỉ mục dưới dạng khóa B-Tree và con trỏ bản ghi dưới dạng giá trị B-Tree.

Bất cứ khi nào bạn tìm kiếm bản ghi chứa giá trị nhất định của cột được lập chỉ mục, công cụ sẽ tìm khóa giữ giá trị này trong B-Tree, truy xuất con trỏ đến bản ghi và tìm nạp bản ghi.

Chính xác là "con trỏ ghi", phụ thuộc vào công cụ lưu trữ.

  • Trong MyISAM, con trỏ bản ghi được bù đắp cho bản ghi trong tệp MYI.

  • Trong InnoDB, con trỏ bản ghi là giá trị của PRIMARY KEY.

Trong InnoDB, bảng chính nó là một B-Tree với một PRIMARY KEY như một chìa khóa B-Tree. Đây được gọi là "chỉ số nhóm" hoặc "bảng được sắp xếp theo chỉ mục". Trong trường hợp này, tất cả các trường khác được lưu trữ dưới dạng giá trị B-Tree.

Trong MyISAM, các bản ghi được lưu trữ mà không có bất kỳ thứ tự đặc biệt nào. Điều này được gọi là "lưu trữ heap".

+0

Cảm ơn bạn đã giải thích. Trong cơ sở dữ liệu của tôi, tôi có một số bảng với MyISAM và một số là InnoDB với các chỉ mục trên chúng. Liệu điều này có hiệu quả không khi các phép nối và truy vấn tôi viết đều là các kiểu khác nhau? – JPro

+1

@JPro: Cơ sở dữ liệu xử lý các chi tiết lập chỉ mục cơ bản một cách tự động. Cú pháp 'JOIN' giống với các bảng' MyISAM' và 'InnoDB'. – Quassnoi

+0

ý của tôi là gì, có quan trọng chút nào khi tạo ra tất cả các bảng với cùng một công cụ lưu trữ hay không? – JPro

Các vấn đề liên quan