Trang công ty CÔNG NGHỆ index trong sql là gì, tại sao bắt buộc index database? sử dụng index vào sql query

Index (chỉ mục) vào Squốc lộ Server là những cấu tạo tài liệu đặc biệt được links với các bảng hoặc view giúp tăng speed truy hỏi vấn. Squốc lộ Server hỗ trợ nhị một số loại index: clustered index và non-clustered index.quý khách hàng đang xem: Index vào sql là gì, tại sao bắt buộc index database? sử dụng index vào sql query

Trong hướng dẫn này, các bạn sẽ mày mò hầu như trang bị các bạn nên biết về index vào Squốc lộ Server để sở hữu một chiến lược sản xuất index giỏi nhằm mục tiêu buổi tối ưu hóa những truy tìm vấn của người tiêu dùng.

Bạn đang xem: What is a vector database?

Clustered Index vào Squốc lộ Server

Trong phần này, bạn sẽ tò mò về clustered index trong Squốc lộ Server với giải pháp định nghĩa clustered index đến bảng.

Giới thiệu về Clustered Index trong Squốc lộ Server

Câu lệnh tiếp sau đây sản xuất một bảng new có tên production.parts bao hàm nhị cột part_id và part_name:

CREATE TABLE production.parts( part_id INT NOT NULL, part_name VARCHAR(100));Và câu lệnh này ckém một vài bản ghi vào bảng production.parts:

INSERT INTO production.parts(part_id, part_name)VALUES (1,"Frame"), (2,"Head Tube"), (3,"Handlebar Grip"), (4,"Shochồng Absorber"), (5,"Fork");Bảng production.parts không tồn tại khóa bao gồm, vì vậy SQL Server tàng trữ những bạn dạng ghi của nó vào một kết cấu gồm máy từ bỏ được Hotline là heap (đống).

lúc chúng ta truy tìm vấn dữ liệu từ bảng production.parts, trình về tối ưu hóa truy hỏi vấn đang quét toàn thể bảng nhằm xác định vị trí chính xác.

Ví dụ: câu lệnh này kiếm tìm bản ghi có id là 5.

SELECT part_id, part_nameFROM production.partsWHERE part_id = 5;Nếu chúng ta coi khoảng chừng chiến lược thực hiện vào Squốc lộ Server Management Studio, bạn có thể thấy Squốc lộ Server vẫn giới thiệu kế hoạch tróc nã vấn nlỗi sau:


*

Lưu ý: để thấy ước tính chiến lược triển khai trong Squốc lộ Server Management Studio, chúng ta nhấp chuột nút ít Display Estimated Execution Plan hoặc chọn truy nã vấn cùng thừa nhận phím tắt Ctrl+L:
*

Vì bảng production.parts chỉ bao gồm năm bạn dạng ghi, phải truy hỏi vấn vẫn triển khai khôn xiết nhanh khô. Tuy nhiên, ví như bảng chứa một số lượng bản ghi Khủng thì vẫn mất không ít thời hạn và tài nguim nhằm tìm tìm tài liệu.

Để giải quyết vụ việc này, SQL Server hỗ trợ một cấu tạo chuyên dụng nhằm tăng vận tốc truy hỏi xuất các phiên bản ghi xuất phát điểm từ 1 bảng được Hotline là index.

SQL Server có nhị một số loại index là clustered index và non-clustered index.

Một clustered index lưu trữ các phiên bản ghi dữ liệu trong một cấu tạo được sắp xếp dựa trên các cực hiếm khóa của nó. Mỗi bảng chỉ tất cả một clustered index vì chưng những bạn dạng ghi dữ liệu chỉ rất có thể được thu xếp theo một thứ từ bỏ. Bảng gồm clustered index được gọi là clustered table.

Bức Ảnh tiếp sau đây minc họa cấu trúc của một clustered index:


*

Một clustered index tổ chức dữ liệu bằng phương pháp sử dụng một cấu trúc đặc trưng được call là B-tree (balanced tree - cây cân nặng bằng) chất nhận được tìm kiếm, chèn, update với xóa bạn dạng ghi bất kỳ cùng với thời hạn như nhau.

Trong cấu tạo này, nút bên trên cùng của B-tree được gọi là nút gốc (root node). Các nút ít sống cấp độ dưới thuộc được Call là những nút lá (leaf nodes). Bất kỳ nút ít như thế nào trung tâm các nút gốc với nút lá được Điện thoại tư vấn là nút ít trung gian.

Trong B-tree, nút ít nơi bắt đầu với nút trung gian cất các trang chỉ mục nhằm lữu trữ những chỉ mục của những bản ghi. Các nút lá chứa các trang tài liệu (data pages) của bảng. Các trang trong mỗi cấp của index được link bởi cấu trúc không giống Hotline là danh sách link song.

Clustered Index và khóa chính trong SQL Server

Khi các bạn chế tác bảng có khóa thiết yếu, SQL Server đã auto tạo thành một clustered index tương xứng dựa vào những cột tất cả vào khóa thiết yếu.

Câu lệnh này sinh sản một bảng new tên là production.part_prices gồm khóa chính bao hàm nhị cột là: part_id với valid_from.

CREATE TABLE production.part_prices( part_id int, valid_from date, price decimal(18,4) not null, PRIMARY KEY(part_id, valid_from) );

*

Nhỏng các bạn thấy vào hình bên trên, Squốc lộ Server đang auto tạo nên một clustered index mang tên là PK__part_pri_xxxx mang đến bảng production.part_prices.

Nếu chúng ta thêm khóa chính vào một bảng vẫn bao gồm một clustered index, SQL Server đang nên khóa bao gồm sử dụng một non-clustered index. Câu lệnh này tư tưởng khóa bao gồm mang đến bảng production.parts:

ALTER TABLE production.partsĐịa Chỉ PRIMARY KEY(part_id);

Tạo Clustered Index trong SQL Server

Trong trường phù hợp một bảng không có khóa chính (vấn đề đó cực kỳ hiếm) chúng ta có thể thực hiện câu lệnh CREATE CLUSTERED INDEX để khái niệm một clustered index mang đến bảng.

Câu lệnh sau đây tạo thành một clustered index mang đến bảng production.parts:

CREATE CLUSTERED INDEX ix_parts_idON production.parts (part_id); Nếu bạn msinh hoạt nút ít Indexes bên dưới tên bảng, các bạn sẽ thấy thương hiệu chỉ mục mới ix_parts_id với thứ hạng Clustered.


*

SELECT part_id, part_nameFROM production.partsWHERE part_id = 5;

Cú pháp tạo clustered index trong Squốc lộ Server

Cú pháp sinh sản clustered index vào Squốc lộ Server nhỏng sau:

CREATE CLUSTERED INDEX index_nameON schema_name.table_name (column_list);Trong cú pháp này:

Thứ nhất, các bạn sử dụng mệnh đề CREATE CLUSTERED INDEX để sản xuất clustered index.Thứ đọng nhị, hướng đẫn thương hiệu của clustered index sau mệnh đề CREATE CLUSTERED INDEX.Thứ đọng ba, hướng đẫn lược thứ và thương hiệu bảng mà bạn muốn chế tạo index.Cuối cùng, liệt kê một hoặc những cột có trong index.

Xem thêm: Download Realtek* High Definition Audio Driver For Nuc5Ixry, Realtek Hd Audio Drivers

Non-clustered index vào Squốc lộ Server

Trong phần này, các bạn sẽ tìm hiểu giải pháp sử dụng câu lệnh Squốc lộ Server CREATE INDEX để tạo ra những non-clustered index cho các bảng.

Giới thiệu về non-clustered index vào SQL Server

Non-clustered index là một trong những cấu trúc dữ liệu góp nâng cao tốc độ truy tìm xuất tài liệu tự những bảng. Không giống hệt như clustered index, non-clustered index sắp xếp cùng tàng trữ dữ liệu riêng lẻ cùng với những bản ghi trong bảng. Nó là 1 trong những bạn dạng sao tài liệu của các cột được lựa chọn xuất phát điểm từ một bảng được links.

Tương tự nhỏng clustered index, non-clustered index thực hiện cấu tạo cây B-Tree nhằm tổ chức tài liệu của nó.

Một bảng hoàn toàn có thể bao gồm một hoặc nhiều non-clustered index cùng mỗi non-clustered index có thể bao gồm 1 hoặc nhiều cột của bảng.

Bức Ảnh dưới đây minc họa cấu tạo non-clustered index:


Bên cạnh bài toán tàng trữ những cực hiếm khóa index, các nút ít lá cũng lưu trữ những con trỏ trỏ cho tới những bản ghi gồm đựng những quý hiếm khóa. Những con trỏ bản ghi này còn gọi là các xác định mặt hàng (row locators).

Nếu bảng là 1 trong clustered table (bảng bao gồm clustered index), bé trỏ bản ghi là khóa của clustered index. Trong ngôi trường hợp bảng không có clustered index, nhỏ trỏ phiên bản ghi trỏ mang lại bạn dạng ghi của bảng.

Tạo non-clustered index vào Squốc lộ Server

Để tạo nên một non-clustered index trong Squốc lộ Server, chúng ta sử dụng câu lệnh CREATE INDEX:

CREATE INDEX index_nameON table_name(column_list);Trong cú pháp này:

Trước tiên, hướng dẫn và chỉ định thương hiệu của index sau mệnh đề CREATE NONCLUSTERED INDEX. Lưu ý rằng trường đoản cú khóa NONCLUSTERED là tùy lựa chọn.Thđọng nhì, hướng đẫn thương hiệu bảng cơ mà bạn có nhu cầu tạo index với list những cột của bảng đó làm cho cột khóa index.

ví dụ như về non-clustered index vào Squốc lộ Server

Chúng tôi vẫn áp dụng bảng sales.customers từ bỏ các đại lý dữ liệu mẫu để minc họa.


Bảng sales.customers là một trong những clustered table bởi vì nó bao gồm một khóa thiết yếu customer_id.

Tạo non-clustered index cho một cột trong Squốc lộ Server

Câu lệnh sau search tìm mọi quý khách gồm tác động sinh hoạt tỉnh thành Atwater:

SELECT customer_id, cityFROM sales.customersWHERE thành phố = "Atwater";Nếu bạn coi ước chừng chiến lược thực thi, các bạn sẽ thấy trình buổi tối ưu hóa truy nã vấn quét clustered index nhằm tìm kiếm những phiên bản ghi. Điều này là vì bảng sales.customers không có index đến cột thành phố.


Để nâng cấp vận tốc của tầm nã vấn này, chúng ta cũng có thể tạo một non-clustered index mang lại cột city nlỗi sau:

CREATE INDEX ix_customers_cityON sales.customers(city);Bây giờ đồng hồ, nếu khách hàng xem lại ước lượng planer thực hiện của tróc nã vấn trên, các bạn sẽ thấy rằng trình buổi tối ưu hóa truy vấn vấn thực hiện non-clustered index ix_customers_city như sau:


Tạo non-clustered index đến các cột trong SQL Server

Câu lệnh tiếp sau đây tìm tìm khách hàng có bọn họ là Berg và thương hiệu là Monika:

SELECT customer_id, first_name, last_nameFROM sales.customersWHERE last_name = "Berg" AND first_name = "Monika";
Trình về tối ưu hóa truy hỏi vấn quét clustered index để kiếm tìm kiếm người tiêu dùng gồm chúng ta là Berg cùng tên là Monika.

Để tăng tốc độ tầm nã xuất tài liệu, bạn cũng có thể tạo một non-clustered index bao hàm cả nhì cột last_name cùng first_name như sau:

CREATE INDEX ix_customers_name ON sales.customers(last_name, first_name);Bây giờ đồng hồ, trình buổi tối ưu hóa tróc nã vấn vẫn sử dụng chỉ mục ix_customers_name để tra cứu kiếm quý khách hàng.

SELECT customer_id, first_name, last_nameFROM sales.customersWHERE last_name = "Berg" AND first_name = "Monika";
Khi bạn sinh sản một non-clustered index bao hàm nhiều cột, sản phẩm công nghệ trường đoản cú của những cột trong chỉ mục là cực kỳ đặc trưng. quý khách nên được đặt các cột mà lại các bạn thường thực hiện nhằm truy vấn tài liệu sinh sống đầu danh sách cột.

Ví dụ: câu lệnh sau đây tìm kiếm quý khách hàng có bọn họ Albert. Vì cột last_name là cột đầu tiên trong index, trình tối ưu hóa truy hỏi vấn có thể tận dụng index với thực hiện cách tiến hành index seek nhằm tìm kiếm:

SELECT customer_id, first_name, last_nameFROM sales.customersWHERE last_name = "Albert";
Câu lệnh tiếp sau đây tìm kiếm kiếm quý khách mang tên là Adam. Nó cũng tận dụng tối đa index ix_customer_name nhưng mà nó cần quét toàn cục index (index scan) nhằm kiếm tìm kiếm, chậm trễ rộng so với sử dụng cách thức index seek nhằm tìm kiếm kiếm.

SELECT customer_id, first_name, last_nameFROM sales.customersWHERE first_name = "Adam";
Do đó, phương pháp tốt nhất là đặt những cột nhưng chúng ta thường áp dụng nhằm tầm nã vấn dữ liệu ở đầu danh sách cột của index.

Đổi tên index trong SQL Server

Trong phần này, các bạn sẽ khám phá giải pháp đổi tên index bằng phương pháp thực hiện stored procedure khối hệ thống sp_rename cùng SQL Server Management Studio.

Xem thêm: Auto Cad 2010 (32Bit + 64Bit) Full + Crack Đây!, Tải Autocad 2010 Full Vĩnh Viễn 100% 32/64 Bit

Đổi tên index bằng phương pháp thực hiện stored procedure sp_rename

sp_renamelà 1 trong stored procedure hệ thống được cho phép bạn thay tên ngẫu nhiên đối tượng người tiêu dùng làm sao bởi vì người tiêu dùng tạo vào đại lý dữ liệu hiện nay bao gồm bảng, index với cột.

Câu lệnh thay tên một index nlỗi sau:

EXEC sp_rename index_name, new_index_name, N"INDEX";Hoặc bạn có thể áp dụng những tmê mệt số cụ thể như sau:

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *