hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MySQL
Tăng Tốc Truy Vấn Dữ Liệu Với INDEX Trong MySQL

Tăng Tốc Truy Vấn Dữ Liệu Với INDEX Trong MySQL

  • 08-07-2025
  • Toanngo92
  • 0 Comments

INDEX (Chỉ Mục) trong MySQL — giúp MySQL tăng tốc độ truy vấn dữ liệu, đặc biệt với các bảng lớn và hệ thống thực tế có hàng ngàn đến hàng triệu dòng.


Mục lục

  • ✅ 1. INDEX là gì?
  • ✅ 2. Khi nào cần dùng INDEX?
  • ✅ 3. Cú pháp tạo INDEX
  • ✅ 4. Ví dụ thực tế
  • ✅ 5. Các loại INDEX trong MySQL
  • ✅ 6. Kiểm tra các index hiện có
  • ✅ 7. Xóa index
  • ✅ 8. Index trên nhiều cột (Composite Index)
  • ✅ 9. Lưu ý khi dùng INDEX
  • ✅ 10. Tối ưu hóa với EXPLAIN
  • 📘 Kết Luận

✅ 1. INDEX là gì?

  • INDEX (chỉ mục) là cấu trúc dữ liệu phụ được tạo ra để tăng tốc độ truy vấn bằng cách giúp MySQL tìm dữ liệu nhanh hơn thay vì quét toàn bộ bảng.
  • Tương tự như mục lục sách: thay vì đọc từng trang, bạn tra nhanh qua số thứ tự.

✅ 2. Khi nào cần dùng INDEX?

  • Bảng có dữ liệu lớn
  • Truy vấn hay dùng WHERE, JOIN, ORDER BY, GROUP BY trên một số cột nhất định
  • Tăng hiệu suất tìm kiếm, lọc, liên kết dữ liệu

✅ 3. Cú pháp tạo INDEX

CREATE INDEX ten_index ON ten_bang(cot1 [, cot2, ...]);

✅ 4. Ví dụ thực tế

CREATE TABLE Customers (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    phone VARCHAR(20)
);

Bạn thường truy vấn theo email:

SELECT * FROM Customers WHERE email = '[email protected]';

→ Tạo chỉ mục:

CREATE INDEX idx_email ON Customers(email);

Lần sau truy vấn, MySQL sẽ tìm nhanh hơn vì không phải quét toàn bộ bảng.


✅ 5. Các loại INDEX trong MySQL

Loại IndexMô tả
PRIMARY KEYTự động là chỉ mục chính, duy nhất và không NULL
UNIQUEChỉ mục duy nhất – không cho phép trùng giá trị
INDEX (normal)Chỉ mục thông thường – cho phép trùng
FULLTEXTDùng cho tìm kiếm toàn văn (full-text search) với MATCH … AGAINST
SPATIALDùng cho dữ liệu không gian (GIS)

✅ 6. Kiểm tra các index hiện có

SHOW INDEX FROM Customers;

✅ 7. Xóa index

DROP INDEX idx_email ON Customers;

✅ 8. Index trên nhiều cột (Composite Index)

CREATE INDEX idx_name_phone ON Customers(name, phone);

Tăng tốc truy vấn khi bạn lọc theo cả name và phone, hoặc name (nhưng không tối ưu nếu chỉ lọc phone).


✅ 9. Lưu ý khi dùng INDEX

Lưu ýGiải thích
✅ Tăng tốc truy vấnĐặc biệt với WHERE, JOIN, ORDER BY, GROUP BY
❌ Làm chậm INSERT, UPDATE, DELETEVì MySQL phải cập nhật chỉ mục kèm theo dữ liệu
❌ Tốn thêm dung lượng lưu trữIndex chiếm thêm bộ nhớ
✅ Nên tạo chỉ mục có chọn lọc caoNhững cột có nhiều giá trị khác nhau (vd: email, id), không nên index cột gender nếu chỉ có male/female

✅ 10. Tối ưu hóa với EXPLAIN

Bạn có thể kiểm tra xem truy vấn có dùng index hay không bằng EXPLAIN:

EXPLAIN SELECT * FROM Customers WHERE email = '[email protected]';

📌 Nếu cột key trong kết quả có tên chỉ mục → ✅ đã dùng index.


📘 Kết Luận

  • INDEX là công cụ tối ưu hóa truy vấn quan trọng nhất trong MySQL.
  • Sử dụng đúng lúc và đúng cột sẽ giúp hệ thống chạy nhanh, tiết kiệm tài nguyên.
  • Tuy nhiên, đừng lạm dụng — vì quá nhiều chỉ mục cũng làm chậm ghi dữ liệu.

Bài viết liên quan:

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT
FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị
TRIGGER Trong MySQL – Kích Hoạt Tự Động Khi Dữ Liệu Thay Đổi
Giao Dịch (Transaction) Trong MySQL — START TRANSACTION, COMMIT, ROLLBACK
Stored Procedure Trong MySQL — thủ tục lưu trữ
VIEW Trong MySQL — Bảng Ảo Từ Truy Vấn
Điều Kiện Trong Truy Vấn Với CASE WHEN và Wildcard, REGEXP trong MySQL
Truy Vấn Con (SUBQUERY) và Biểu Thức Bảng Chung (CTE) Trong MySQL
Kết Hợp Dữ Liệu Từ Nhiều Bảng Với JOIN Trong MySQL
Hàm Tổng Hợp và Nhóm Dữ Liệu Trong MySQL: GROUP BY, HAVING
Truy Vấn Dữ Liệu Với SELECT Trong MySQL
Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Truy Vấn Dữ Liệu Với SELECT Trong MySQL

Các Lệnh DML Cơ Bản Trong MySQL: INSERT, UPDATE, DELETE

TCL Trong MySQL – Quản Lý Giao Dịch Với COMMIT, ROLLBACK, SAVEPOINT

DCL Trong MySQL – Quản Lý Quyền Truy Cập Với GRANT và REVOKE

FUNCTION Trong MySQL – Định Nghĩa Hàm Tùy Chỉnh Trả Về Giá Trị

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×