Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các chỉ mục duy nhất có tốt hơn cho hiệu suất tìm kiếm cột không? (PGSQL &MySQL)

Nếu dữ liệu của bạn là duy nhất, bạn nên tạo UNIQUE lập chỉ mục về chúng.

Điều này ngụ ý không có thêm chi phí và ảnh hưởng đến quyết định của trình tối ưu hóa trong một số trường hợp nhất định để nó có thể chọn một thuật toán tốt hơn.

Trong SQL Server và trong PostgreSQL , chẳng hạn, nếu bạn sắp xếp trên UNIQUE , trình tối ưu hóa bỏ qua ORDER BY mệnh đề được sử dụng sau đó (vì chúng không liên quan), i. e. truy vấn này:

SELECT  *
FROM    mytable
ORDER BY
        col_unique, other_col
LIMIT 10

sẽ sử dụng một chỉ mục trên col_unique và sẽ không sắp xếp trên other_col bởi vì nó vô dụng.

Truy vấn này:

SELECT  *
FROM    mytable
WHERE   mycol IN
        (
        SELECT  othercol
        FROM    othertable
        )

cũng sẽ được chuyển đổi thành INNER JOIN (trái ngược với SEMI JOIN ) nếu có UNIQUE lập chỉ mục trên othertable.othercol .

Chỉ mục luôn chứa một số loại con trỏ đến hàng (ctid trong PostgreSQL , con trỏ hàng trong MyISAM , khóa chính / bộ duy nhất trong InnoDB ) và các lá được sắp xếp theo thứ tự trên các con trỏ này, vì vậy trên thực tế, mọi lá chỉ mục đều là duy nhất theo một cách nào đó (mặc dù nó có thể không rõ ràng).

Xem bài viết này trong blog của tôi để biết chi tiết về hiệu suất:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 'False' có thể khớp với một số chuỗi trong mysql không?

  2. Chọn tất cả các bản ghi không đáp ứng các điều kiện nhất định trong một bảng đã tham gia

  3. Kết nối với Amazon RDS bằng PHP

  4. Lỗi cú pháp JpaRepository SQL khi cố gắng lưu vào MySQL Date

  5. Làm thế nào để hiển thị tổng số của hàng cuối cùng theo filestatus?