Trong bài đăng này, tôi đang chia sẻ một tập lệnh để tìm các chỉ mục bị thiếu trong lược đồ của PostgreSQL.
Việc quét toàn bộ bảng luôn tạo ra vấn đề về hiệu suất cho bất kỳ cơ sở dữ liệu nào.
Là một Chuyên gia Cơ sở dữ liệu, bạn đang thêm các chỉ mục cơ sở dữ liệu trên một bảng nhưng định kỳ khối lượng dữ liệu thay đổi, vì vậy chúng tôi cần phân tích các chỉ mục cũ hoặc chúng tôi nên tìm các chỉ mục bị thiếu có thể yêu cầu để có hiệu suất truy vấn tốt hơn.
Mặt khác, Quản trị viên cơ sở dữ liệu cũng có thể yêu cầu báo cáo về các chỉ mục bị thiếu mà họ có thể chia sẻ với các nhà phát triển và người dùng để họ có thể sửa đổi các chỉ mục cho phù hợp..
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT relname AS TableName ,seq_scan-idx_scan AS TotalSeqScan ,CASE WHEN seq_scan-idx_scan > 0 THEN 'Missing Index Found' ELSE 'Missing Index Not Found' END AS MissingIndex ,pg_size_pretty(pg_relation_size(relname::regclass)) AS TableSize ,idx_scan AS TotalIndexScan FROM pg_stat_all_tables WHERE schemaname='public' AND pg_relation_size(relname::regclass)>100000 ORDER BY 2 DESC; |