Câu trả lời:
92K trong số 4M vẫn chỉ là 2,3% trong hồ sơ của bạn. Tôi muốn đề xuất tùy chọn đầu tiên của bạn, chỉ cần ném những gì bạn muốn xóa vào cơ sở dữ liệu và để cơ sở dữ liệu sắp xếp nó (nếu bạn đưa nó vào cơ sở dữ liệu cùng một lúc, rất có thể nó sẽ làm việc đó hiệu quả hơn so với việc bạn gửi nó ngoài). Lần duy nhất tôi khuyên bạn nên kiểm tra nó là nếu ứng dụng của bạn rất quan trọng về thời gian và bạn lo lắng về việc làm chậm nó (trong trường hợp đó, giải pháp khác là thực hiện ngoài giờ).
Nếu bạn lấy 20-30% hoặc nhiều hơn các bản ghi ra khỏi bảng, tôi khuyên bạn nên bỏ các chỉ mục, thực hiện xóa và tạo lại các chỉ mục, theo sau là một OPTIMIZE TABLE
, nhưng đối với 2% các bản ghi trong bảng thì chỉ mục sẽ được xây dựng lại chi phí không đáng là bao (chỉ nhanh hơn để giữ cho các chỉ mục được cập nhật trong khi xóa các bản ghi).
Điều đó nói rằng, sau khi bạn thực hiện xóa, chạy OPTIMIZE TABLE
có thể không phải là một ý tưởng tồi - mặc dù vậy, đừng làm điều đó trong giờ cao điểm.
Tôi sẽ luôn luôn sử dụng DELETE QUICK
thay vì chỉ DELETE
, vì nó ít hoạt động hơn với các chỉ mục trong quá trình xóa, và sau đó ở giai đoạn sau khi bạn có cơ hội tối ưu hóa bảng, các chỉ mục bị bỏ lại phía sau được tập hợp lại.
Tôi chắc chắn khuyên bạn nên đọc tài liệu trên DELETE QUICK
để xem nếu nó sẽ giúp.
Bạn muốn chắc chắn rằng kế hoạch của bạn đang Tìm kiếm để tìm các hồ sơ quan tâm. Vì vậy, làm cho nó chạy độc đáo như là một CHỌN đầu tiên với các chỉ mục thích hợp.
Nếu khóa liên quan đến việc thực hiện XÓA là một nỗi đau, thì hãy thực hiện theo đợt. Nhưng nếu truy vấn của bạn đang quét bảng, thì việc sử dụng các đợt sẽ kết thúc việc quét bảng nhiều lần.
DELETE QUICK
MyISAM (được chỉ định trong liên kết của bạn) vì nó thực hiện những gì TÙY CHỌN 2 trong câu trả lời của tôi. +1 !!!