Xóa chỉ mục mysql

Xin chào các bạn, ở trong bài viết trước. CHỈ MỤC trong SQL. Tổng quan, khái niệm, cơ chế hoạt động mình đã nói về một số giới thiệu tổng quan về INDEX trong SQL như là

  • Cơ chế hoạt động của INDEX
  • Các loại INDEX

Nếu như các bạn chưa đọc bài viết trước thì hãy click vào link bên trên để có thể hiểu được cơ bản về nó nhé. Trong bài viết này mình sẽ hướng dẫn các bạn cách tạo/xóa INDEX trong bảng và một số lưu ý để sử dụng INDEX trong SQL nhé

Cách tạo INDEX

Để tạo INDEX trong SQL, các bạn sử dụng câu truy vấn sau (giá trị của trường được phép trùng nhau không bắt buộc)

CREATE INDEX index_name
ON table_name (column1, column2, ...);

Để tạo chỉ mục duy nhất (giá trị của trường là duy nhất, không được phép trùng nhau)

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

Ví dụ tạo chỉ mục

Ví dụ bạn đang có bảng người dùng với các cột

  • id (Khóa chính, Tự động tăng)
  • tên tài khoản
  • e-mail
  • mật khẩu mở khóa

Vì cột id là từ khóa chính nên nó mặc định sẽ được đánh chỉ mục ở dạng duy nhất. Chính vì vậy nếu bạn truy vấn tìm kiếm bản ghi thông qua id thường rất nhanh là như vậy

Bởi vì bây giờ bạn truy vấn rất nhiều đến dữ liệu của cột tên người dùng chính vì vậy bạn muốn INDEX cho nó để giúp truy vấn nhanh hơn

CREATE INDEX idx_username
ON users (username);

Truy vấn đến tên người dùng và email rất nhiều (và thường thì 2 trường này luôn được tìm kiếm bài hát trong câu hỏi, kiểu như. WHERE username = ‘VanTien’ AND email = ‘tienhuhihaha@vantien. net'). Lúc này bạn có thể tạo 1 tổ hợp chỉ mục (compound index) cho 2 cột này bằng cách

CREATE INDEX idx_username_email
ON users (username, email);

Lưu ý. Bạn tạo INDEX as on và việc tạo 2 INDEX cho 2 cột như dưới đây nó sẽ khác nhau đấy nhé

CREATE INDEX idx_username
ON users (username);
CREATE INDEX idx_email
ON users (email);

Việc bạn tạo chỉ mục dạng hợp chất sẽ tốt hơn cho việc truy vấn kết nối 2 cột lại với nhau đấy nhé. Ví dụ như bạn cần tìm người dùng có cả 2 điều kiện là. tên người dùng = ‘TienDepTrai’ VÀ email = ‘TienDepTrai@vantien. net'. Thì dạng hợp chất sẽ cần duyệt qua ít bản ghi hơn là so với dạng đơn lẻ bên trên. Chi tiết bạn có thể xem tại đây nhé. Một bài học nhỏ về “chỉ số phức hợp”

XÓA CHỈ MỤC

Nếu bạn không muốn sử dụng INDEX nữa thì bạn hoàn toàn có thể xóa bằng cách sử dụng

DROP INDEX index_name ON table_name;

Trong MySQL, bạn sẽ có thêm 1 cách nữa là

ALTER TABLE table_name
DROP INDEX index_name;

Ví dụ xóa chỉ mục

Vẫn là bảng người dùng bên trên và giả định là bạn đã tạo 1 chỉ mục là idx_username nhé. Bây giờ bạn không muốn sử dụng INDEX cho nó nữa thì bạn có thể chạy

DROP INDEX idx_username ON users;

hoặc

________số 8

Một vài lưu ý khi sử dụng INDEX

– Bạn hãy cố gắng tránh sử dụng các toán tử sau mệnh trong đề bài Ở ĐÂU NHƯ VẬY. “LÀ KHÔNG”, “<>”, “. =”, “. >”, “. <“, “KHÔNG”, “KHÔNG TỒN TẠI”, “KHÔNG Ở”, “KHÔNG THÍCH”. Vì những toán tử này nó không sử dụng chỉ số đặc trưng mà thay vào đó nó sẽ dò tìm toàn bộ bảng gây ảnh hưởng đến tốc độ của câu hỏi

Khá hay ho là khi bạn sử dụng “LIKE ‘%abc'” thì nó cũng không sử dụng chỉ mục sẽ quét qua toàn bộ bảng còn nếu bạn sử dụng “LIKE ‘abc%'” thì… nó lại sử dụng đến INDEX

Xóa chỉ mục mysql

– Bạn không nên sử dụng các chức năng tích hợp trực tiếp cho các cột vì nó cũng sẽ không sử dụng chỉ mục. Ví dụ

SELECT * FROM users
WHERE UPPER(username) = 'TIEN';

Ví dụ sau có sử dụng chỉ mục

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
0

– Trong các câu truy vấn có nhiều OR với nhiều cột bạn có thể viết lại bằng cách kết hợp UNION ALL để tăng tốc độ truy vấn. Ví dụ bạn đã đánh chỉ mục riêng cho tên người dùng và email

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
5 xóa bảng khỏi cơ sở dữ liệu. Chỉ chủ sở hữu bảng, chủ sở hữu lược đồ và siêu người dùng mới có thể xóa bảng. Để làm trống một bảng các hàng mà không phá hủy bảng, hãy sử dụng
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
6 hoặc
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
7

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
5 luôn xóa mọi chỉ mục, quy tắc, trình kích hoạt và ràng buộc tồn tại đối với bảng mục tiêu. Tuy nhiên, để loại bỏ một bảng được tham chiếu bởi một dạng xem hoặc một ràng buộc khóa ngoài của một bảng khác, thì phải chỉ định
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
9. (
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
9 sẽ xóa hoàn toàn chế độ xem phụ thuộc, nhưng trong trường hợp khóa ngoại, thao tác này sẽ chỉ xóa ràng buộc khóa ngoại, chứ không xóa hoàn toàn bảng khác. )

Thông số

CREATE INDEX idx_username
ON users (username);
1

Đừng ném lỗi nếu bảng không tồn tại. Một thông báo được đưa ra trong trường hợp này

CREATE INDEX idx_username
ON users (username);
2

Tên (tùy chọn lược đồ đủ điều kiện) của bảng để loại bỏ

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
9

Tự động loại bỏ các đối tượng phụ thuộc vào bảng (chẳng hạn như chế độ xem) và tất cả các đối tượng phụ thuộc vào các đối tượng đó (xem Phần 5. 14)

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
11

Từ chối làm rơi bàn nếu có đồ vật phụ thuộc vào nó. Đây là mặc định

ví dụ

Để phá hủy hai bảng,

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
12 và
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
13

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
1

khả năng tương thích

Lệnh này tuân theo tiêu chuẩn SQL, ngoại trừ tiêu chuẩn này chỉ cho phép loại bỏ một bảng cho mỗi lệnh và ngoài tùy chọn

CREATE INDEX idx_username
ON users (username);
1, đây là phần mở rộng của PostgreSQL