के संदर्भ में यह क्वेरी अनुकूलित कैसे की जा सकती है यह क्वेरी मुझे दिए गए :x
, :y
को कार्टेशियन निर्देशांक में सबसे नज़दीकी तत्व देनी चाहिए।निष्पादन गति
SELECT `type`
FROM `mapgen_centers`
ORDER BY SQRT(POW((:x - `x`), 2) + POW((:y - `y`), 2))
LIMIT 1
यह वर्तमान में औसत जो ठीक है पर 0.002s लेता है, लेकिन मैं महसूस कर रही है इस बेहतर हो सकता है, खासकर इसलिए कि मैं वर्तमान में यह बहुत, बहुत बार और बार-बार आग, ताकि लिपि बवासीर के पूरे निष्पादन कई मिनटों के लिए।
कर सकते हैं (और अगर, कैसे) यह एक मानक MySQL स्थापना पर किसी भी तरह के माध्यम से अनुकूलित किया जाना उपलब्ध (प्रक्रियाओं, कार्यों, अनुक्रमित, विन्यास, ...)
आप फॉर्मूला के परिणाम के साथ एक कॉलम जोड़ने पर विचार कर सकते हैं: 'एसक्यूआरटी (पाउ ((: एक्स - एक्स), 2) + पाउ ((: वाई - वाई), 2)) 'और – Stephan
पर एक इंडेक्स जोड़ें लेकिन ': x',': y' प्रत्येक निष्पादन के साथ बदलें? यदि सूत्र पहले ज्ञात नहीं हैं तो मैं उस सूत्र के साथ कॉलम कैसे बना सकता हूं? –
क्या आपको वास्तव में 'एसक्यूआरटी' का उपयोग करने की आवश्यकता है क्योंकि इसका उपयोग केवल सॉर्ट करने के लिए किया जाता है? ऐसा नहीं है कि जब (x'-x)^2 + (y'-y)^2 अधिक हो जाता है तो इसका वर्ग रूट भी अधिक हो जाता है? – iCantSeeSharp