-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
B-Tree là cấu trúc dữ liệu được dùng để lưu trữ index nhằm tối ưu tốc truy vấn trong MySQL.
(Sử dụng explain để phân tích câu query trước khi thực thi)
Các loại truy vấn có thể sử dụng index với B-Tree:
Loại 1: Match the full value:
Query với đầy đủ giá trị của key được đánh index.
Index: KEY dwh_created_at (dwh_created_at,dwh_updated_at)

Loại 2: Match a leftmost prefix
Query sử dụng index khi tìm user_id bắt đầu bằng a
Index: KEY user_id (user_id)

Loại 3: Match a column prefix
Index được sử dụng khi column đầu tiên bên trái của index được sử dụng
Index: KEY dwh_created_at (dwh_created_at,dwh_updated_at)

Loại 4: Match a range of values
Index: KEY dwh_created_at (dwh_created_at,dwh_updated_at)
Index được sử dụng khi query trong 1 khoảng, nó cũng được áp dụng với cột đầu tiên bên trái của index

Loại 5: Match one part exactly and match a range on another part
Kết hợp nhiều index trên query
Index:
KEY user_id (user_id)
KEY dwh_created_at (dwh_created_at,dwh_updated_at)

Chú ý: Một số trường hợp index không được sử dụng
- Trong khi truy vấn chúng ta muốn viết query sao cho càng ngăn gọn càng tốt nhưng đôi khi không để ý sẽ rơi vào trường hợp sau:
Ví dụ: Lấy tất cả dữ liệu trong bảng được tạo ra vào ngày'2017-03-01'ta sử dụng hàmdate(dwh_created_at), trường hợp này index sẽ không được sử dụng:
KEY dwh_created_at (dwh_created_at,dwh_updated_at)


Viết đúng phải là:


- Sử dụng column thứ 2 trong index
KEY dwh_created_at (dwh_created_at,dwh_updated_at)

- Ngại sử dụng
likekhi query:
KEY user_id (user_id)

trong khi

Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels