INDEX SQL LÀ GÌ

  -  

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

Bạn đang xem: Index sql là gì


Index là gì?

Index là một cấu trúc dữ liệu giúp xác định hối hả các records trong table.

Hiểu một cách đơn giản thì nếu không có index thì SQL đề xuất scan tổng thể table để kiếm được các records tất cả liên quan. Dữ liệu càng lớn, vận tốc query đã càng chậm.

Pros & Cons khi đánh index.

Ưu điểm

Ưu điểm của index là tăng 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à với tất cả xử lý UPDATE tốt DELETE có đk WHERE.

Nhược điểm

- Khi áp dụng index thì vận tốc của phần đông xử lý ghi dữ liệu (Insert, Update, Delete) có khả năng sẽ bị chậm đi.

- do ngoài việc thêm giỏi update thông tin data thì MYSQL cũng cần update lại thông tin index của bảng tương ứng.

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

- do thế với phần nhiều table hay tất cả xử lý insert, update hoặc delete cùng cần vận tốc xử lý cấp tốc thì tránh việc được đánh index.

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

Các giao diện index

- MySQL hỗ trợ 3 mẫu mã index khác nhau cho data sẽ là B-Tree, Hash với R-Tree index.

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

B-Tree index

Thông thường xuyên khi kể tới index mà không chỉ là rõ các loại index thì mặc định là sẽ thực hiện 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 địa chỉ 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:

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

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

Xem thêm: Top 8 Khách Sạn Ở Bến Tre - 10 Khách Sạn Tốt Nhất Ở Bến Tre (Giá Từ Vnd 252

*

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

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

– lúc truy vấn dữ liệu thì CSDL sẽ không scan dữ liệu trên toàn cục bảng để tìm dữ liệu, việc tìm kiếm kiếm vào B-Tree là 1 quá trình đệ quy, ban đầu từ root node với tìm tìm tới branch cùng leaf, đến khi tìm kiếm được tất cả dữ liệu – vừa lòng 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 mã Hash Function (hàm băm). Tương xứng với từng khối tài liệu (index) sẽ xuất hiện 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 đặc điểm của Hash Index:

*

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

– không thể buổi tối ưu hóa toán tử ORDER BY bởi việc thực hiện Hash index bởi vì nó không thể tìm kiếm được phần từ tiếp theo trong Order.

– Hash có vận tốc nhanh hơn thứ hạng B-Tree.

Các vẻ bên ngoài index khớp ứng với Storage Engine

Việc lựa chọn index theo kiểu B-Tree tốt Hash ngoại trừ yếu tố về mục đích sử dụng index thì nó còn phụ thuộc vào vấn đề Storage Engine có hỗ trợ loại index đó hay không.


Storage Engine

Các đẳng cấp index được hỗ trợ

InnoDB

BTREE

MyISAM

BTREE

MEMORY/HEAP

HASH, BTREE

NDB

HASH, BTREE


Cách tiến công index

Đánh index một trường

Đây là giải pháp khá thông thường khi chúng ta lựa lựa chọn một column được sử dụng thỉnh thoảng tìm kiếm với đánh index đến nó.

Nhưng gồm một chú ý đó là nếu con số giá trị chất lượng hay quý giá khác NULL vào column đó rất thấp so với tổng số records của bảng thì vấn đề đánh index lại ko có ý nghĩa sâu sắc lắm.

Sẽ hơi là kỳ cục nếu những trường như gender hay age lại được đánh index ngay cả khi được tra cứu kiếm nhiều.

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

Với ngôi trường hợp đánh index trên những columns thì index chỉ có tác dụng khi tìm kiếm theo thiết bị tự những trường của index.

Giả sử bao gồm 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ứ từ bỏ cột index vào câu lệnh trên là last_name, first_name và dob.

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


1

SELECT * FROM Customer WHERE last_name=’Peter’ và first_name=’Smith’


Nhưng trong những trường hợp sau index sẽ không còn được sử dụng:


1

2

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


Như vậy nếu như khách hàng đánh index cho những columns thì việc quan trọng nhất đó là tìm kiếm theo sản phẩm tự những columns được tiến công index

và bảo vệ rằng column trước tiên được tiến công index sẽ luôn nằm trong đk tìm tìm của bạn.

Kết luận

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

Xem thêm: Tuy Hòa Phú Yên Tuy Hòa Áp Dụng Giãn Cách Xã Hội 14 Ngày, Du Lịch Tuy Hòa

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


viethanquangngai.edu.vn - căn cơ kết nối việc làm IT