Những Điều Cần Biết Về Index Trong Database Index Là Gì? Chỉ Mục (Index) Là Gì

     

Một trong những vấn đề mà mình nghĩ rằng tốn các thời gian, sức lực của lập trình sẵn viên sẽ là việc cải thiện performance mang đến hệ thống.Sẽ không tồn tại vấn đề gì nếu hệ thống chỉ bao gồm số users và lượng data không thật lớn, tuy thế nếu trái lại việc về tối ưu hoá các query cùng với database vẫn là chủ yếu để optimize performance cho hệ thống.Trong nội dung bài viết này bản thân sẽ ra mắt về bài toán đánh index cho những table thông qua đó tăng performance cho những câu lệnh query.

Bạn đang xem: Những điều cần biết về index trong database index là gì? chỉ mục (index) là gì


Index là gì?

Index là một kết cấu dữ liệu góp xác định nhanh lẹ các records trong table.

Hiểu một cách dễ dàng thì nếu không có index thì SQL bắt buộc scan toàn bộ table để tìm được các records bao gồm liên quan. Tài liệu càng lớn, tốc độ query đang càng chậm.

Pros & Cons khi tiến công index.

Ưu điểm

Ưu điểm của index là tăng vận tốc tìm tìm records theo câu lệnh WHERE.

Không chỉ số lượng giới hạn trong câu lệnh SELECT mà đối với cả xử lý UPDATE tuyệt DELETE có điều kiện WHERE.

Nhược điểm

- Khi thực hiện index thì tốc độ của rất nhiều xử lý ghi tài liệu (Insert, Update, Delete) có khả năng sẽ bị chậm đi.

- bởi ngoài câu hỏi thêm tốt update tin tức data thì MYSQL cũng cần phải update lại thông tin index của bảng tương ứng.

- vận tốc xử lý bị chậm trễ đi cũng tỷ lệ thuận với số lượng index được xử dụng vào bảng.

- do thế với đa số table hay có xử lý insert, update hoặc delete và cần vận tốc xử lý nhanh thì không nên được tấn công index.

- dường như việc tấn công index cũng trở nên tốn resource của vps như thêm dung lượng cho CSDL.

Các hình trạng index

- MySQL cung cấp 3 vẻ bên ngoài index khác biệt cho data sẽ là B-Tree, Hash cùng R-Tree index.

- do R-Tree được sử dụng cho các loại dữ liệu hình học không khí Spatial data cùng thường ít khi gặp phải nên nội dung bài viết này bọn họ sẽ tập thông thường vào 2 nhiều loại index là B-Tree cùng Hash.

B-Tree index

Thông thường khi kể đến index mà không chỉ là rõ các loại index thì default là sẽ sử dụng B-Tree index.

Cú pháp:


1

2

3

4

5

6

// Create index

CREATE INDEX id_index ON table_name (column_name<, column_name…>) USING BTREE;

// Or

ALTER TABLE table_name add INDEX id_index (column_name<, column_name…>)

//Drop index

DROP INDEX index_name ON table_name


Các điểm lưu ý của B-Tree Index:

– tài liệu index được tổ chức triển khai và lưu lại trữ theo dạng tree, có nghĩa là có root, branch, leaf.

※Cách chuẩn bị xếp chưa hẳn theo dạng cây kiếm tìm kiếm nhị phân – Binary search tree vì chưng số lá là từng node không xẩy ra giới hạn là 2.

Xem thêm: Giá Cpt Là Gì ? Điều Kiện Cpt Trong Incoterm 2020 Những Điều Cần Biết Về Carriage Paid To

*

– giá bán trị của những node được tổ chức tăng dần từ trái qua phải.

– B-Tree index được sử dụng trong các biểu thức so sánh dạng: =, >, >=, ORDER BY

– lúc truy vấn tài liệu thì CSDL sẽ không scan tài liệu trên toàn bộ bảng nhằm tìm dữ liệu, việc tìm và đào bới kiếm vào B-Tree là 1 quy trình đệ quy, bước đầu từ root node cùng tìm tìm tới branch cùng leaf, cho khi tìm được tất cả tài liệu – thỏa mãn nhu cầu với đk truy vấn thì mới có thể dùng lại.

Hash Index

Hash index dựa trên giải thuật Hash Function (hàm băm). Tương ứng với mỗi khối tài liệu (index) sẽ có mặt một bucket key(giá trị băm) để phân biệt.

Cú pháp:


1

2

3

4

// Create index

CREATE INDEX id_index ON table_name (column_name<, column_name…>) USING HASH;

// Or

ALTER TABLE table_name add INDEX id_index (column_name<, column_name…>) USING HASH;


Các điểm sáng của Hash Index:

*

– khác với B-Tree, thì Hash index nên làm sử dụng trong các biểu thức toán tử là = và . Không áp dụng cho toán từ tìm kiếm 1 khoảng chừng giá trị như > hay

– không thể về tối ưu hóa toán tử ORDER BY bằng việc áp dụng Hash index chính vì nó quan trọng tìm tìm được phần từ tiếp theo trong Order.

– Hash có vận tốc nhanh hơn dạng hình B-Tree.

Các mẫu mã index khớp ứng với Storage Engine

Việc chọn index theo phong cách B-Tree tuyệt Hash ko kể yếu tố về mục đích sử dụng index thì nó còn dựa vào vào việc Storage Engine có cung cấp loại index đó hay không.


Storage Engine

Các phong cách index được hỗ trợ

InnoDB

BTREE

MyISAM

BTREE

MEMORY/HEAP

HASH, BTREE

NDB

HASH, BTREE


Cách tấn công index

Đánh index một trường

Đây là phương pháp khá thông thường khi bọn họ lựa lựa chọn một column được sử dụng đôi khi tìm kiếm cùng đánh index đến nó.

Nhưng có một xem xét đó là nếu số lượng giá trị unique hay cực hiếm khác NULL vào column đó quá thấp so với tổng số records của bảng thì bài toán đánh index lại ko có ý nghĩa lắm.

Sẽ tương đối là kỳ dị nếu đầy đủ trường như gender xuất xắc age lại được tấn công index ngay cả khi được tìm kiếm kiếm nhiều.

Đánh index các trường (B-Tree Index)

Với ngôi trường hợp tấn công index trên các columns thì index chỉ có hiệu quả khi tìm kiếm theo trang bị tự các trường của index.

Giả sử có table Customer:


1

2

3

4

5

CREATE TABLE Customer(

last_name varchar(50) not null,

first_name varchar(50) not null,

dob date not null,

key(last_name, first_name, dob) );


Thứ trường đoản cú cột index trong câu lệnh bên trên là last_name, first_name và dob.

Vậy nếu đk tìm tìm như dưới thì index sẽ tiến hành sử dụng.


1

SELECT * FROM Customer WHERE last_name=’Peter’ & first_name=’Smith’


Nhưng giữa những trường đúng theo sau index sẽ không được sử dụng:


1

2

SELECT * FROM Customer WHERE first_name=’Smith’ and last_name=’Peter’


Như vậy nếu như bạn đánh index cho nhiều columns thì việc quan trọng nhất đó là search theo thiết bị tự các columns được đánh index

và đảm bảo an toàn rằng column đầu tiên được tiến công index sẽ luôn nằm trong điều kiện tìm tìm của bạn.

Kết luận

Như vậy họ đã đi bao gồm qua các khái niệm về index, những loại index tương tự như cách tiến công index rồi.

Xem thêm: 21/7 Là Cung Gì - Cung Hoàng Đạo Gì

Bài tiếp theo sau mình đã đi sâu hơn và câu hỏi phân tích performance của những câu lệnh sql giúp xem việc bọn họ đánh index có thực sự tác dụng không.


vemaybay24h.net.vn