Tôi có một bảng với khoảng 2 triệu hồ sơ trong đó. Tôi tạo một chỉ mục không gian, sử dụng các giá trị mặc định khác với hộp giới hạn. Tôi đã nhận thấy rằng một số truy vấn cực kỳ nhanh và một số truy vấn cực kỳ chậm. Yếu tố xác định xuất hiện với kích thước của đa giác được sử dụng trong truy vấn.
Trên các khu vực tìm kiếm lớn hơn, sử dụng WITH(INDEX(SIX_FT5))
làm chậm truy vấn một cách đáng kể (từ 0 giây đến 15 giây). Trên các khu vực tìm kiếm nhỏ hơn, hoàn toàn ngược lại.
Đây là một số truy vấn tôi đang thử nghiệm với:
Nhanh:
SELECT TOP(1000) * FROM [FT5] WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1)
Chậm:
SELECT TOP(1000) * FROM [FT5] WITH(INDEX(SIX_FT5)) WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1)
Có ai biết chuyện gì đang xảy ra ở đây không?