You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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àm date(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 like khi query: KEY user_id (user_id)
trong khi
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_idbắt đầu bằngaIndex:
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
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à:
KEY dwh_created_at (dwh_created_at,dwh_updated_at)likekhi query:KEY user_id (user_id)trong khi