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

Tại sao PostgreSQL thực hiện quét tuần tự trên cột được lập chỉ mục?

Nếu SELECT trả về nhiều hơn khoảng 5-10% tất cả các hàng trong bảng, thì quá trình quét tuần tự sẽ nhanh hơn nhiều so với quét chỉ mục.

Điều này là do quá trình quét chỉ mục yêu cầu một số Các phép toán IO cho mỗi hàng (tra cứu hàng trong chỉ mục, sau đó truy xuất hàng từ đống). Trong khi quá trình quét tuần tự chỉ yêu cầu một IO duy nhất cho mỗi hàng - hoặc thậm chí ít hơn vì một khối (trang) trên đĩa chứa nhiều hơn một hàng, do đó, nhiều hơn một hàng có thể được tìm nạp bằng một thao tác IO duy nhất.

Btw:điều này cũng đúng với các DBMS khác - một số tối ưu hóa như "chỉ quét chỉ mục" được loại bỏ sang một bên (nhưng đối với SELECT * thì rất khó có khả năng một DBMS như vậy sẽ sử dụng "chỉ quét chỉ mục")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy xuất tất cả các đặc quyền đối tượng cho vai trò cụ thể

  2. Các khóa chính với Apache Spark

  3. truy vấn sql động trong postgres

  4. Tại sao postgres không sử dụng chỉ mục trong truy vấn của tôi

  5. Trong Postgresql, buộc duy nhất trên sự kết hợp của hai cột