ประสิทธิภาพดัชนีเชิงพื้นที่ของ sql server


14

ฉันมีตารางที่มีประมาณ 2 ล้านบันทึกในนั้น ฉันสร้างดัชนีเชิงพื้นที่โดยใช้ค่าเริ่มต้นนอกเหนือจากกล่องขอบเขต ฉันสังเกตเห็นว่าคำค้นหาบางคำนั้นเร็วมากและบางอันก็ช้ามาก ปัจจัยที่กำหนดจะปรากฏขึ้นกับขนาดของรูปหลายเหลี่ยมที่ใช้ในแบบสอบถาม

ในพื้นที่การค้นหาที่ใหญ่ขึ้นการใช้WITH(INDEX(SIX_FT5))ข้อความค้นหาจะช้าลงอย่างมาก (จาก 0 วินาทีถึง 15+ วินาที) ในพื้นที่การค้นหาขนาดเล็กตรงข้ามกับที่เป็นจริง

นี่คือคำค้นหาที่ฉันทดสอบด้วย:

อย่างรวดเร็ว:

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) 

ช้า:

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) 

ใครรู้ว่าเกิดอะไรขึ้นที่นี่


ฉันเพิ่งจะผ่านสิ่งที่คล้ายกันdba.stackexchange.com/questions/61289/ …วันอื่น ๆ ... ฉันไม่ได้สร้างรูปหลายเหลี่ยมจากข้อความ แต่เป็นจุดตัดและรูปหลายเหลี่ยม ... ฉันระบุให้ใช้ดัชนีเชิงพื้นที่ ตรงจุดซึ่งมีผลความเร็วที่ยอดเยี่ยม จากนั้นฉันลองใช้ดัชนีเชิงพื้นที่ในรูปหลายเหลี่ยมและมีประสิทธิภาพต่ำมาก ... ซึ่งดูเหมือนจะตรงกันข้ามกับปัญหาของคุณ!
DPSSpatial

4
หากคุณคิดเกี่ยวกับเรื่องนี้การเปลี่ยนขนาดของซองจดหมายการค้นหาควรมีผลกระทบอย่างมีนัยสำคัญต่อแบบสอบถาม - ยิ่งมีจำนวนแถวที่ส่งคืนผ่านดัชนีมากเท่าไรการตอบสนองก็จะช้าลง ในบางจุดการสแกนแบบเต็มตารางจะเร็วขึ้นและทิ้งแถวตามซองจดหมาย ฉันขอแนะนำให้คุณใช้เวลามากขึ้นกับตัวเลือกดัชนีเชิงพื้นที่เนื่องจากคุณอาจมีพื้นที่สำหรับเพิ่มประสิทธิภาพของดัชนี
Vince

บันทึกของคุณแสดงถึงคะแนนหรือไม่ นั่นไม่ได้ระบุไว้ นอกจากนี้คุณสามารถเผยแพร่สร้างดัชนีดัชนีที่คุณใช้หรือไม่ เป็น AutoGrid หรือไม่
gischimp

ฉันใช้ 'Geography Auto Gird' และ 'Cells per Object' = 4000 แล้วตัดคะแนน 110+ ล้านจุดด้วย ~ 45K รูปหลายเหลี่ยม
Michael

1
สิ่งที่คุณต้องจำไว้ก็คือว่าการตัดกันเป็นการดำเนินการที่ซับซ้อนก่อนอื่นต้องดูว่าองค์ประกอบที่ถูกตัดกันการดำเนินการที่ค่อนข้างเร็วผ่านดัชนีหรือไม่ แต่สำหรับแต่ละรายการที่ตรงกันจะต้องคำนวณว่าทุกรายการเดี่ยวจริง ๆ หรือไม่ เป็นอีกการดำเนินการที่มีราคาแพงกว่าซึ่งจะมีราคาสูงกว่าเนื่องจากรูปหลายเหลี่ยมมีความซับซ้อนมากขึ้นและ / หรือมีจำนวนมากขึ้น
AKK2

คำตอบ:


1

ตามที่แสดงความคิดเห็นโดย @Vince :

หากคุณคิดเกี่ยวกับเรื่องนี้การเปลี่ยนขนาดของซองจดหมายการค้นหาควรมีผลกระทบอย่างมีนัยสำคัญต่อแบบสอบถาม - ยิ่งมีจำนวนแถวที่ส่งคืนผ่านดัชนีมากเท่าไรการตอบสนองก็จะช้าลง ในบางจุดการสแกนแบบเต็มตารางจะเร็วขึ้นและทิ้งแถวตามซองจดหมาย ฉันขอแนะนำให้คุณใช้เวลามากขึ้นกับตัวเลือกดัชนีเชิงพื้นที่เนื่องจากคุณอาจมีพื้นที่สำหรับเพิ่มประสิทธิภาพของดัชนี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.