کوئری مکانی من کند است؛ چطور علتش را پیدا کنم؟
پاسخ کوتاه
با EXPLAIN ANALYZE ببینید نمایه مکانی استفاده میشود یا نه. معمولاً علت نبود نمایه GiST، آمار قدیمی (ANALYZE) یا تابعی روی ستون هندسه در شرط است. با سلامت داده نمایه و آمار را درست کنید.
بررسی طرح اجرا
EXPLAIN ANALYZE
SELECT * FROM parcels
WHERE ST_Intersects(geom, ST_MakeEnvelope(51.3, 35.6, 51.5, 35.8, 4326));
Index Scan using ..._geom_idxیعنی نمایه استفاده شده است.Seq Scanروی جدول بزرگ یعنی نمایه نیست یا استفاده نمیشود.
علتهای رایج و راهحل
| علت | راهحل |
|---|---|
| نمایه مکانی ندارد | ساخت نمایه یا سلامت داده |
| آمار قدیمی | ANALYZE parcels; |
تابع روی ستون هندسه در شرط (مثلاً ST_Transform(geom,...) = ...) |
داده ورودی را تبدیل کنید، نه ستون را؛ یا ستون تبدیلشده بسازید |
| SRID دو طرف متفاوت | هر دو را همسیستم کنید |
| شرط خیلی گسترده | محدوده را با ST_Intersects/bbox کوچک کنید |
اگر کوئری با خطای زمان قطع میشود، همین موارد را بررسی کنید.
آیا این مقاله به شما کمک کرد؟
هنوز جواب نگرفتید؟ به پشتیبانی بگویید.