> What is selectivity in SQL? How is selectivity calculated and how does it relate to a database index?

Nếu bạn nào đã làm nhiều về database, query, optimize query, hẳn cũng biết cách tạo index để tốc độ query nhanh hơn.

Nhưng không phải lúc nào việc tạo index cũng hiệu quả. Trong một số tình huống, việc scan các rows mà không thông qua index sẽ hiệu quả hơn rất nhiều.

Để xác định khi nào thì nên index cột nào, chúng ta có 1 khái niệm gọi là Selectivity.

Selectivity là xác suất mà một row được chọn dựa theo 1 column được index.

Ví dụ: 1 table Name, Gender, Age. Trong đó field Gender có 2 thuộc tính là Male và Female. Hiện trong table này có khoảng 1000 dòng dữ liệu.

Vậy nếu column Gender được index thì có hiệu quả gì không?

Áp dụng công thức: Selectivity of index = cardinality/(number of records) * 100%

Trong trường hợp của chúng ta, Selectivity of Gender Index = 2 / (1000) * 100% = 0.002 = 0.2%

Nói cách khác, nếu ta đánh index vào ô Gender, thì khả năng tìm thấy row nào đó là 0.2%. Nên sẽ không hiệu quả lắm.

Để biết thêm thông tin chi tiết các bạn có thể đọc tên tại link dưới đây:
http://r.grokking.org/article-selectivity-in-sql-databases