hiệu suất chỉ số không gian máy chủ sql


14

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?


Tôi chỉ đi qua một cái gì đó tương tự dba.stackexchange.com/questions/61289/... ngày khác ... Tôi đã không tạo ra một đa giác từ văn bản, nhưng được giao nhau điểm và đa giác ... tôi đã chỉ định sử dụng các chỉ số không gian trên điểm, trong đó có kết quả tốc độ tuyệt vời. Sau đó tôi đã thử sử dụng chỉ số không gian trên đa giác và có hiệu suất rất kém ... có vẻ như hoàn toàn ngược lại với vấn đề của bạn!
DPSSpatial

4
Nếu bạn nghĩ về nó, việc thay đổi kích thước của phong bì tìm kiếm sẽ có tác động đáng kể đến truy vấn - càng nhiều hàng được trả về qua một chỉ mục, phản hồi càng chậm. Tại một số điểm, nó trở nên nhanh hơn để quét toàn bộ bảng và loại bỏ các hàng dựa trên phong bì. Tôi sẽ đề nghị bạn dành nhiều thời gian hơn với các tùy chọn chỉ mục không gian, vì bạn có thể có chỗ để tối ưu hóa chỉ mục.
Vince

Là hồ sơ của bạn đại diện cho điểm? Điều đó đã không được nêu. Ngoài ra, bạn có thể xuất bản cú pháp tạo chỉ mục mà bạn đã sử dụng không? Có phải là AutoGrid?
gischimp

Tôi đã sử dụng 'Địa lý tự động Gird' và 'Tế bào trên mỗi đối tượng' = 4000. Giao nhau với hơn 110 triệu điểm với ~ 45K đa giác.
Michael

1
Một điều bạn phải nhớ là một giao điểm là một hoạt động phức tạp, trước tiên, nó phải xem xét nếu các phần tử bị ràng buộc giao nhau, hoạt động tương đối nhanh thông qua các chỉ mục, nhưng sau đó đối với mỗi mục khớp nhau, nó phải tính toán nếu mỗi mục thực sự giao nhau, mà là một hoạt động khác, tốn kém hơn, điều này thậm chí còn tốn kém hơn vì các đa giác phức tạp hơn và / hoặc nhiều hơn.
AKK2

Câu trả lời:


1

Theo nhận xét của @Vince :

Nếu bạn nghĩ về nó, việc thay đổi kích thước của phong bì tìm kiếm sẽ có tác động đáng kể đến truy vấn - càng nhiều hàng được trả về qua một chỉ mục, phản hồi càng chậm. Tại một số điểm, nó trở nên nhanh hơn để quét toàn bộ bảng và loại bỏ các hàng dựa trên phong bì. Tôi sẽ đề nghị bạn dành nhiều thời gian hơn với các tùy chọn chỉ mục không gian, vì bạn có thể có chỗ để tối ưu hóa chỉ mục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.