sql >> Database >  >> RDS >> Mysql

het verhogen van de prestaties op een SELECT-query met een grote 3D-puntgegevensset

B-Tree indexen zullen niet veel helpen voor zo'n zoekopdracht.

Wat heb je nodig als R-Tree index en de minimale begrenzende parallellepipedum-query erover.

Helaas, MySQL ondersteunt R-Tree niet indexen over 3d punten, alleen 2d . U kunt echter een index maken over bijvoorbeeld X en Y samen die selectiever zullen zijn dan een van de B-Tree indexen op X en Y alleen:

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;

Dit is alleen mogelijk als uw tafel MyISAM is .



  1. Hoe de grootte van de tabellen van een MySQL-database te krijgen?

  2. Hoe bepaalt SQL Server het formaat voor impliciete datetime-conversie?

  3. Hoe hiërarchische NESTED SET-gegevens weergeven met PHP?

  4. RMAN Back-up commando's