Để khắc phục sự cố, tôi có một câu hỏi một lần là liệu một varchar(max)trường cụ thể có chứa các ký tự ASCII không in (trừ khoảng trắng) không. Sau đây là ý tưởng đơn giản của tôi về cách xác định xem có những ký tự như vậy được lưu trữ trong cơ sở dữ liệu sản xuất của chúng tôi hay không.
SELECT TOP 10 [CaseNoteId]
,[CaseId]
,[CaseNote]
FROM [DB].[XY].[ReferralCaseNotes]
WHERE CaseNote LIKE ('%[' + CHAR(1) + '-' + CHAR(8) + CHAR(11) + CHAR(12) + CHAR(14) + '-' + CHAR(31) + CHAR(127) + ']%')
Sự do dự của tôi khi thực sự chạy điều này xuất phát từ việc sử dụng các ký tự đại diện trong mẫu THÍCH, rằng có hơn một triệu bản ghi trong bảng được đề cập, thiếu chỉ mục toàn văn trên cột này và đây có thể sẽ là một tìm kiếm toàn diện vì chúng tôi không tin rằng bất kỳ nhân vật như vậy tồn tại.
Tôi là một tân sinh viên. Làm cách nào tôi có thể ước tính liệu việc chạy truy vấn này có phải là một tải đáng kể trên hệ thống sản xuất của chúng tôi không? Ngoài ra, có cách nào tốt hơn để có cùng thông tin không?
Những cải tiến có thể có:
- Tôi không lo lắng về việc thay đổi dữ liệu trong khi truy vấn của tôi chạy. Tôi có thể thay đổi truy vấn này để xem xét một vài hàng tại một thời điểm có lợi không?
- Tôi có thể đặt truy vấn này thành một hoạt động nền nào đó mà không cản trở bất kỳ truy vấn nào khác không?
- Tôi có thể chạy nó trong một thời gian giới hạn và xác định tỷ lệ phần trăm của bảng đã được tìm kiếm để tôi có thể ước tính thời gian cần thiết cho một tìm kiếm đầy đủ không?
- Sẽ
WITH(READPAST)cải thiện hiệu suất của tôi?
Tại sao?
Cơ sở dữ liệu trong câu hỏi liên quan đến dữ liệu nhạy cảm, chính phủ và những người bảo mật đưa ra các quy tắc. Khôi phục một bản sao lưu cho một máy chủ khác có ý nghĩa rất lớn, nhưng sẽ khiến người nộp thuế phải trả nhiều đơn hàng lớn hơn nhiều so với bất kỳ ý nghĩa nào.
Nếu câu trả lời là "Đừng lo lắng, bạn chỉ đang thực hiện CHỌN", thì tôi nói, "Tuyệt vời!"