Một số cơ sở dữ liệu là một cấu trúc dữ liệu để cải thiện tốc độ của các hoạt động trong một bảng. Các số chỉ có thể được tạo ra bằng cách sử dụng một hoặc nhiều cột, cung cấp cơ sở cho việc nghiên cứu ngẫu nhiên cả hai nhanh chóng và hiệu quả Trong khi tạo chỉ mục, cần lưu ý rằng các cột đó sẽ được sử dụng để thực hiện các truy vấn SQL và tạo ra một hoặc nhiều chỉ số trên các cột đó là gì Thực tế, chỉ mục cũng là bảng loại, trong đó giữ nguyên từ khóa chính hoặc chỉ mục trường và một con trỏ đến từng bản ghi vào bảng thực tế Người sử dụng không thể nhìn thấy các chỉ mục, chúng chỉ được sử dụng để tăng tốc độ truy vấn và sẽ được sử dụng bởi cơ sở dữ liệu tìm kiếm để xác định vị trí bản ghi rất nhanh Lệnh INSERT và UPDATE tốn nhiều thời gian hơn trên các bảng có chỉ mục khi lệnh SELECT trở nên nhanh hơn trên các bảng này. Lý do là vì, trong khi chèn và cập nhật, cơ sở dữ liệu cũng cần phải chèn hoặc cập nhật các giá trị chỉ mục Chỉ mục đơn giản và Chỉ mục duy nhất Bạn có thể tạo một Chỉ mục duy nhất trên một bảng. Một chỉ mục duy nhất có nghĩa là hai hàng không thể có cùng một giá trị chỉ mục. Dưới đây là cú pháp để tạo một mục trên một bảng
Bạn có thể sử dụng một hoặc nhiều cột để tạo một mục. Ví dụ, chúng ta có thể tạo chỉ mục trên 8 sử dụng 9
Bạn có thể tạo một Simple Index trên một bảng. Đơn giản, bạn chỉ cần bỏ qua từ khóa UNIQUE từ truy vấn để tạo Chỉ mục đơn giản. Simple Index cho phép tồn tại bản sao các giá trị trong một bảng Nếu bạn muốn lập chỉ mục các giá trị trong một cột theo thứ tự giảm dần, bạn có thể thêm từ DESC sau cột tên
Ra lệnh ALTER để thêm và xóa INDEX trong MySQL Có 4 kiểu lệnh để thêm các mục cho một bảng
Lệnh này bổ sung MỘT KHÓA CHÍNH, nghĩa là các giá trị được thiết lập chỉ mục phải là duy nhất và không thể là NULL
Lệnh này tạo một mục chỉ cho các giá trị để giá trị đó phải là duy nhất (với giá trị NULL là ngoại lệ, chúng có thể xuất hiện nhiều lần)
Lệnh này bổ sung một mục thông thường, trong đó bất kỳ giá trị nào cũng có thể xuất hiện nhiều hơn một lần ________số 8Lệnh này tạo một mục FULLTEXT đặc biệt, được sử dụng cho mục đích tìm kiếm văn bản Ví dụ sau để thêm mục cho một bảng đang tồn tại
Bạn có thể xóa bất kỳ INDEX nào theo sử dụng mệnh đề DROP cùng với lệnh ALTER. Bạn xem xét ví dụ sau để xóa chỉ mục đã được tạo ở trên 0Ra lệnh ALTER để thêm và xóa PRIMARY KEY Bạn cũng có thể thêm Khóa chính theo cách tương tự. Nhưng chắc chắn rằng Primary Key đang làm việc trên các cột mà là NOT NULL Ví dụ sau để thêm Primary Key vào một bảng đang tồn tại. Đầu tiên, cột được tạo là NOT NULL và sau đó bổ sung cho nó một Khóa chính 1 0You can use ALTER command to delete a Primary Key as after 1Để xóa một mục mà không phải là KHÓA CHÍNH, bạn phải xác định lại tên của mục Hiển thị thông tin chỉ mục trong MySQL Bạn sử dụng lệnh SHOW INDEX để liệt kê tất cả các chỉ mục được liên kết với một bảng. Kết quả trong định dạng dọc (được xác định bởi \G) thường có ích hơn với lệnh này, để tránh một dòng liệt kê dài You try to example after 2Hãy xem xét ví dụ sau để tìm hiểu và so sánh về tốc độ khi đánh chỉ số cho cách trường Thông tin về bảng Người dùng 3Và để tìm thông tin điểm của Hoàng Văn Huy (mã số 123123), bạn sẽ truy vấn như sau 4MySQL biết rằng phải tìm ở bảng người dùng nhưng nó sẽ không biết bắt đầu từ đâu. Cũng chí nó cũng không biết trước rằng có bao nhiêu quả. Do đó nó sẽ duyệt qua tất cả các danh sách (ví dụ: 200. 000 người) để tìm thông tin về Hoàng Văn Huy Chỉ mục là 1 tệp riêng biệt được lưu trữ tại máy chủ và chỉ chứa những Trường mà bạn muốn nó chứa. Nếu bạn tạo 1 Index cho Field user_id (mã số người dùng), MySQL sẽ dễ dàng tìm ra mã số 1 cách nhanh chóng. Ví dụ như cuốn sách, khi cần tìm 1 thông tin, ta thường ngay lập tức tới phần “Mục lục” và tìm từ đó để tăng tốc độ tìm kiếm. Và việc tạo ra Chỉ mục này sẽ làm cho bạn thấy Cơ sở dữ liệu của bạn chạy nhanh hơn 1 cách khác thường Nhưng trước khi sửa lại cấu trúc của table ở trên, mình sẽ hướng dẫn bạn 1 chút về cách theo dõi kết quả “Tăng tốc MySQL” mà bạn đang làm. Vui lòng sử dụng lệnh GIẢI THÍCH cú pháp 5Bằng lệnh này, bạn sẽ nhận ra được câu hỏi của bạn, điều gì đang xảy ra và kiểu kết hợp (Tham gia) nào đang diễn ra bên trong 6 7
8 6 0
@@, nhìn lại câu hỏi của chúng ta ta mới thật khủng khiếp. Không có Possible_keys nào được sử dụng, MySQL phải duyệt qua 17123 bản ghi mới tìm ra cái ta cần (Hãy tưởng tượng 1 Diễn đàn sẽ có hơn 500. 000 bản ghi) Bây giờ chúng ta sẽ thêm Index vào và truy vấn lại 8 6 3Tốt hơn nhiều rồi, kiểu TYPE = Const có nghĩa là MYSQL hiểu ra chỉ có 1 hàng đúng với ý ta, và có thể hiện qua cột Rows = 1, kiểu key= PRIMARY được sử dụng và chiều dài key_len là 10. Chỉ tìm 1 hàng tất nhiên là tốt hơn nhiều so với tìm 17123 hàng Vì vậy, câu hỏi đặt ra là, nếu tôi muốn thêm Index cho những cột mà có thể có nhiều hơn 1 kết quả khi truy vấn thì sao? Bạn có thể thêm chỉ mục theo cặp như bạn thêm chỉ mục cho cặp 0 và 1 4 0Tuy nhiên, nếu chỉ cần tên 6 7thì MySQL sẽ tìm hết vì không hề có Index cho firstname mà chỉ có Index cho (firstname, lastname) Khi nào thì cần Add Index ? . Vì vậy hãy cân nhắc, nếu Cơ sở dữ liệu của bạn sử dụng INSERT hay UPDATE nhiều hơn là CHỌN thì Index chỉ làm chậm thêm mà thôi Có thể nhanh hơn nữa không? . Bạn không cần phải làm Index cho cả 3 mà chỉ cần 1 phần. Giống như chi tiết mục lục của sách mà quá dài cũng làm bạn khá là quái, có phải họ chỉ trích dẫn 1 tựa đề. Quay lại với bảng của chúng ta, họ và tên chỉ tối đa là 50 ký tự, nếu chúng ta lập chỉ mục cho nó, chúng ta tạo ra mỗi bản ghi lên đến 100 ký tự. There can't Tiết kiệm điện theo cách sau 8Bây giờ thì bạn tiết kiệm điện năng được đến 50% mà vẫn đảm bảo tốc độ rồi đó (trừ trường hợp bạn làm Index quá ngắn). Có thể bạn nói máy chủ đĩa cứng của tôi “vô tư” nhưng hãy nhớ rằng “Nhỏ hơn là nhanh hơn” |