Làm cách nào để thay đổi chỉ mục xây dựng lại toàn bộ cơ sở dữ liệu?


7

Tôi muốn sắp xếp lại các chỉ mục của tất cả các bảng trong cơ sở dữ liệu SQL Server 2008 của mình, được đặt tên là 'db'. Tôi thử lệnh sau:

ALTER INDEX all ON db REBUILD

Và tôi nhận được lỗi sau:

Không thể tìm thấy đối tượng "db" vì nó không tồn tại hoặc bạn không có quyền

Tôi đang làm gì sai?


Người dùng mà bạn đang hành động có quyền truy cập chính xác vào cơ sở dữ liệu không? Bạn có thể tạo một kế hoạch bảo trì để xây dựng lại các chỉ mục và thực hiện điều đó không?
RateControl

Câu trả lời:


14

Để làm tất cả các bảng:

EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'

Không có tuyên bố để làm tất cả các bảng trong cơ sở dữ liệu như bạn đã thử ở trên

Tuy nhiên, đôi khi bạn không muốn điều này, hãy nói chỉ đọc các bảng hoặc các bảng lớn. Ngoài ra, một số bảng / chỉ mục sẽ khó bị phân mảnh.

Một cách thông minh hơn là kiểm tra sự phân mảnh trước sau đó xây dựng lại hoặc sắp xếp lại. Một ví dụ phổ biến và được sử dụng rộng rãi là tập lệnh của SQL Fool


1
Một cái khác thường được các DBA sử dụng là các kịch bản
d -_- b
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.