ĐĂNG KÝ ĐỂ NHẬN THÔNG TIN MỚI NHẤT

Câu lệnh SQL nhất quyết không sử dụng Index vì sao?

Tối ưu SQL sử dụng Index là một kỹ thuật kinh điển, tuy nhiên không nhiều người hiểu rõ bản chất của Index để có thể áp dụng đúng và chuẩn trong các dự án thực tế. Hãy xem Demo sau của tôi nhé

1. Cùng xem xét câu lệnh SQL sau

select * 
from EMPLOYEES 
where 
last_name like '%D%'

Một số thông tin cơ bản:

  • Bảng EMPLOYEES có dung lượng 54MB
  • Tổng số bản ghi trong bảng EMPLOYEES là 1.100.006 bản ghi
  • Giả sử bảng hiện tại không có bất kỳ Index nào cả

Chiến lược thực thi của câu lệnh SQL thời điểm này như sau

  • Câu lệnh buộc phải quét toàn bộ các block trong bảng (TABLE ACCESS FULL)
  • Chi phí thực hiện câu lệnh là 2K

tối ưu câu lệnh SQL

2. Demo đánh giá hiệu quả sử dụng Index của Cơ sở dữ liệu

Ta tiến hành tạo Index trên cột LAST_NAME của bảng EMPLOYEES

create index idx_lastname 
on EMPLOYEES(last_name);

Sau khi tạo Index thành công, kiểm tra lại chiến lược thực thi của câu lệnh SQL.

Kết quả chiến lược thực thi của câu lệnh không hề khác biệt so với ban đầu

tối ưu câu lệnh SQL

Hiện tượng này là do hệ thống không thể sử dụng Index nếu chúng ta tiến hành tìm kiếm với điều kiện LIKE mà có % ở đầu giá trị tìm kiếm.

Câu hỏi đặt ra ở đây là: Nếu như trong câu lệnh SQL trên, ta tìm kiếm giá trị mà không bắt đầu bằng dấu ‘%’ thì hệ thống có luôn sử dụng Index hay không?

  • Câu trả lời là nếu chuyển từ khóa tìm kiếm thành ‘D%’ thì cũng chưa chắc câu lệnh nhận Index!!!

Tại sao lại như vậy?

Anh em có thể Video Demo nhé

3. Video Demo

 

 

Views: 715





    Câu hỏi bảo mật

    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 *

    Ask ChatGPT
    Set ChatGPT API key
    Find your Secret API key in your ChatGPT User settings and paste it here to connect ChatGPT with your Tutor LMS website.