-
ANALYZE TABLE không xây dựng lại chỉ mục, phải không?
Tôi không biết nhưng ngày nay bạn nên sử dụng
DBMS_STATS.GATHER_TABLE_STATS
chứ không phải làANALYZE TABLE
-
Tải trực tiếp có nghĩa là dữ liệu không được chèn từng hàng mà ở dạng hàng loạt, hãy xem Tải đường dẫn trực tiếp
-
Nếu chỉ mục của bạn trở thành
UNUSABLE
thì nó phải là một chỉ mục toàn cầu. -
Sử dụng
UPDATE GLOBAL INDEXES
mệnh đề, tức làalter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES;
hoặc tạo chỉ mục cục bộ. -
Phụ thuộc vào cột bạn đã lập chỉ mục. Thay vì toàn bộ bảng, bạn cũng có thể chạy
DBMS_STATS.GATHER_INDEX_STATS
. VớiDBMS_STATS.GATHER_TABLE_STATS
bạn cũng có thể chỉ định các phân vùng đơn lẻ và thậm chí cả các cột đơn lẻ.
btw, đối với nhiều câu hỏi, câu trả lời của tôi thực sự phải là:"Bạn có tham khảo tài liệu Oracle không"? hoặc "Bạn có biết google" không? Theo ảnh chụp màn hình của bạn, bạn sử dụng lược đồ SYS
và vùng bảng SYSAUX
cho các đối tượng người dùng của bạn. Bạn không nên làm điều đó. Tạo người dùng của riêng bạn và tạo bất kỳ đối tượng nào trong giản đồ này.
Nói chung, có ba loại chỉ mục được phân vùng:
- CHỈ SỐ TOÀN CẦU:Bạn có một chỉ mục lớn trải dài trên toàn bộ bảng. Điều này là bắt buộc đối với các CHỈ SỐ DUY NHẤT nếu các cột được lập chỉ mục không phải là một phần của khóa phân vùng. Trên thực tế, chỉ mục như vậy không được phân vùng. (như được hiển thị trong
ALL_INDEXES
) - CHỈ SỐ ĐỊA PHƯƠNG:Chỉ mục này được phân vùng theo cách giống như bảng bên dưới. Mỗi phân vùng bảng có một phân vùng chỉ mục.
- PARTITIONED INDEX:Chỉ mục này được phân vùng nhưng khác nhau hơn bảng bên dưới. Tôi nghĩ rằng thậm chí có thể tạo một chỉ mục được phân vùng trên một bảng không được phân vùng. Chỉ mục được phân vùng chỉ được giới hạn trong các trường hợp sử dụng rất đặc biệt. Trên thực tế, tôi không thể tưởng tượng nơi mà chỉ số như vậy sẽ có ý nghĩa.