Bạn có thể reindex bảng và thậm chí thu nhỏ bảng. Tuy nhiên, nếu bạn muốn trì hoãn việc bảo trì dựa trên đĩa như vậy, ít nhất, bạn nên tính lại số liệu thống kê chỉ mục.
Nếu không tính toán lại các thống kê chỉ mục, Trình tối ưu hóa truy vấn MySQL có thể đưa ra các lựa chọn không tốt cho các kế hoạch GIẢI THÍCH truy vấn. Điều này có thể ảnh hưởng xấu đến CHỌN nếu số liệu thống kê cho dữ liệu không tồn tại vẫn còn. Điều này đúng cho cả MyISAM và InnoDB.
Bạn không phải thu nhỏ bảng để tính toán thống kê chỉ số, mặc dù nó sẽ tốt hơn cho hiệu suất tổng thể.
Để tính toán thống kê cho tất cả các chỉ mục trong một bảng, bạn sẽ chạy
ANALYZE TABLE tablename;
Bạn có thể làm điều này mỗi đêm. Nó sẽ không cố gắng thực hiện bất kỳ phân mảnh hoặc thu nhỏ dữ liệu. Bạn có thể có thể làm điều đó một lần một tuần bằng cách chạy OPTIMIZE TABLE tablename;
. Điều này cũng sẽ làm ANALYZE TABLE tablename;
cho bạn sau khi thu nhỏ tệp vật lý của bảng ( .ibd
cho InnoDB hoặc .MYI
cho MyISAM) hoặc.