Thường chúng ta sẽ sử dụng câu lệnh DELETE để xóa dữ liệu, và xóa hết dữ liệu trong một bảng bằng câu lệnh có cú pháp "delete from table <tên của bảng>".
Cách xóa này thường rất mất thời gian, nếu dữ liệu trong bảng nhiều.
Vậy có cách nào xóa nhanh hơn không?
Chúng ta có thể sử dụng câu lệnh TRUNCATE để xóa tất cả dữ liệu trong bảng với thời gian nhanh hơn nhiều so với sử dụng câu lệnh xóa thông thường.
Nhưng có một số vấn đề cần phải lưu ý khi thực hiện truncate dữ liệu của một bảng, đó là:
- Truncate sẽ xóa hết tất cả (lưu ý là "tất cả" nhé)
- Không truncate được khi bảng có khóa ngoại (trừ trường hợp khóa ngoại trong chính bảng cần xóa)
- Khi đã truncate rồi khi không có cửa để phục hồi lại như sử dụng lệnh delete đâu nha.
Cú pháp:
TRUNCATE TABLE <TÊN BẢNG>
Một số sql script hữu ích sử dụng kèm:
1. Giảm dung lượng theo phần trăm
Cách này sẽ giảm kích thước của database (gồm cả file data và file log) xuống duy trì 10% free cho database:
DBCC SHRINKDATABASE (cosmotran_db, 10)
2. Giảm theo lượng dữ liệu
Giảm kích thước của database (cả file data lẫn file log) xuống, tùy chọn này có thể hiểu là xuống đến mức có bao nhiêu thì xuống tới đó luôn:
DBCC SHRINKDATABASE (cosmotran_db, TRUNCATEONLY)
3. Xem các constraint có trong bảng
Khi shrink thường gặp thông báo rằng còn khóa ngoại tồn tại, thường sẽ có thông báo cụ thể tên khóa, tên bảng liên quan. Hoặc ta có thể tìm thông tin đầy đủ của các ràng buộc (trong đó có khóa) của bảng bằng cách sử dụng script sau:
SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='<tên bảng>'
4. Xóa constraint
Sau đó sử dụng script xóa constraint
ALTER TABLE <tên bảng>
DROP CONSTRAINT <tên ràng buộc>
Ở đây, tên của ràng buộc là phần CONSTRAINT_NAME trong script 3.
5. Thông tin về dụng lượng file của database
Sau khi shrink database xong, có thể kiểm tra lại thông tin về dung lượng và các thông tin khác bằng srcipt sau đây:
SELECT file_id, name, type_desc, physical_name, size, max_size
FROM SYS.DATABASE_FILES
6. Điều chỉnh dung lượng tối đa của file
Chúng ta có ví dụ về điều chỉnh dung lượng tối đa của file data của databae cosmotran_db
ALTER DATABASE cosmotran_db
MODIFY FILE
(NAME = cosmotran_db_data,
MAXSIZE = 200MB);
0 Comments
Đăng nhận xét