B-Tree
इस तरह की क्वेरी के लिए अनुक्रमणिका बहुत मदद नहीं करेगी।
R-Tree
के रूप में आपको क्या चाहिए अनुक्रमणिका और उस पर न्यूनतम बाउंडिंग समानांतर चतुर्भुज क्वेरी।
दुर्भाग्य से, MySQL
R-Tree
. का समर्थन नहीं करता है 3d
. से ऊपर के इंडेक्स अंक, केवल 2d
. हालांकि, आप X
. के ऊपर एक इंडेक्स बना सकते हैं और Y
एक साथ जो अधिक चयनात्मक होगा कि B-Tree
. में से कोई भी X
. पर अनुक्रमणिका और Y
अकेला:
ALTER TABLE points ADD xy POINT;
UPDATE points
SET xy = Point(x, y);
ALTER TABLE points MODIFY xy POINT NOT NULL;
CREATE SPATIAL INDEX sx_points_xy ON points (xy);
SELECT *
FROM points
WHERE MBRContains(LineString(Point(100, 100), Point(200, 200), xy)
AND z BETWEEN 100 and 200
AND otherParameter > 10;
यह तभी संभव है जब आपकी तालिका MyISAM
. हो ।