Nói chung, bạn cần để tối ưu hóa bảng khi datafile của nó là quá nhiều phân mảnh trên đĩa (các công cụ sử dụng cho hệ thống tập tin của bạn để kiểm tra - kịch bản liên quan bởi GiantRobot không tính toán phân mảnh), khi có nhiều hàng được cập nhật và thay đổi kích thước của chúng (có thể tạo ra phân đoạn hàng) hoặc sau khi xóa nhiều bản ghi khi bạn sẽ không thêm lại chúng sớm. Bởi vì không gian trống được MySQL sử dụng cho các hàng mới, khi các bản ghi đã xóa và mới có cùng kích thước hàng, không cần OPTIMIZE.
CHECK TABLE chỉ được sử dụng khi bạn nghi ngờ tham nhũng dữ liệu (không nên xảy ra trong khi chạy bình thường). Một số bản phân phối Linux (ví dụ Debian) có các kịch bản khởi động chạy CHECK TABLE cho tất cả các bảng khởi động máy chủ MySQL. REPAIR TABLE sau đó được sử dụng để sửa chữa các bảng bị hỏng.
BẢNG ANALYZE có thể được sử dụng để cập nhật cardinality chỉ mục, được sử dụng để xác định kế hoạch thực hiện truy vấn. Thông thường nó là cần thiết chỉ trong trường hợp đặc biệt.
Nó không phải là rõ ràng từ câu hỏi của bạn như thế nào là bảng thống kê của bạn được sử dụng ... bao nhiêu viết, xóa và đọc? Bảng thống kê của tôi đã viết tất cả các thời gian, và một lần một ngày nó được đọc, dữ liệu hợp nhất và ghi vào bảng khác, sau đó xóa. Trong trường hợp này, không cần chạy OPTIMIZE vì dữ liệu không được đọc thường xuyên và không gian trống được sử dụng lại cho dữ liệu mới. Tôi đang sử dụng phân vùng theo ngày, vì vậy thay vì xóa các bản ghi (mà là khá chậm), tôi chỉ DROP PARTITION (mất tối đa 1 giây)
Các bảng được cập nhật hàng ngày: Có phải họ MyISAM hoặc InnoDB ??? – RolandoMySQLDBA