sql >> Databáze >  >> RDS >> Mysql

zvýšení výkonu na SELECT dotazu s velkým souborem 3D bodových dat

B-Tree indexy pro takový dotaz příliš nepomohou.

Co potřebujete jako R-Tree index a nad ním minimální ohraničující rovnoběžnostěnový dotaz.

Bohužel MySQL nepodporuje R-Tree indexy přes 3d bodů, pouze 2d . Můžete však vytvořit index přes, řekněme, X a Y společně, což bude selektivnější než kterýkoli z B-Tree indexy na X a Y sám:

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;

To je možné pouze v případě, že je vaše tabulka MyISAM .



  1. Pořadí dotazů MySQL podle více položek

  2. Hibernate, Postgresql:Sloupec x je typu oid, ale výraz je typu byte

  3. Take(limit) seznam uvnitř Groupby v Entity Framework

  4. Jak vybrat záznamy z posledních 24 hodin v PostgreSQL