Câu trả lời:
Thống kê đơn giản là một dạng siêu dữ liệu động hỗ trợ trình tối ưu hóa truy vấn trong việc đưa ra quyết định tốt hơn. Ví dụ: nếu chỉ có một tá hàng trong một bảng, thì sẽ không có điểm nào để đến một chỉ mục để thực hiện tra cứu; bạn sẽ luôn luôn tốt hơn khi thực hiện quét toàn bộ bảng. Nhưng nếu cùng một bảng phát triển thành một triệu hàng, thì có lẽ bạn sẽ tốt hơn khi sử dụng chỉ mục. Nhưng nếu bạn truy vấn bảng đó trên một cột chỉ có rất ít giá trị duy nhất (ví dụ: đó có thể là cột "sex" chỉ chứa "M" hoặc "F"), thì thực tế FTS có thể tốt hơn trong trường hợp đó bởi vì bạn sẽ dù sao cũng cần lấy khối để xây dựng tập kết quả. Bây giờ hãy nói rằng bảng của bạn là 99% "M" và chỉ 1% "F", chúng ta nên FTS trong một trường hợp hoặc sử dụng một chỉ mục trong trường hợp khác. Cùng một bảng, cùng một truy vấn, có khả năng bốn kế hoạch truy vấn khác nhau tùy thuộc vào nội dung của bảng. Những loại điều này là "thống kê" và chúng là riêng cho từng cơ sở dữ liệu - thậm chí hai cơ sở dữ liệu có cấu trúc bảng và chỉ mục giống hệt nhau sẽ có số liệu thống kê khác nhau.
Tóm lại, trong một công cụ cơ sở dữ liệu hiện đại, có hai loại tối ưu hóa truy vấn: viết lại SQL (tối ưu hóa dựa trên quy tắc, giống như trình biên dịch viết lại C của bạn để làm cho nó hiệu quả hơn) và chọn đúng đường dẫn dữ liệu (tối ưu hóa dựa trên chi phí , giống như trình biên dịch JIT xác định các điểm nóng khi chạy). Bạn chỉ cần lo lắng về điều này nếu bạn phát hiện ra trình tối ưu hóa truy vấn đang làm điều gì đó rõ ràng sai (ví dụ: chọn FTS khi bạn biết một chỉ mục sẽ tốt hơn).
Chúng được sử dụng bởi trình tối ưu hóa truy vấn (whitepaper trên MSDN) để theo dõi phân phối giá trị trong các chỉ mục và / hoặc cột.
Mối quan tâm duy nhất của bạn là cập nhật thường xuyên : chỉ cần rời khỏi công cụ DB để thực hiện công việc của nó