sql >> データベース >  >> RDS >> Mysql

大規模な3Dポイントデータセットを使用したSELECTクエリのパフォーマンスの向上

    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の場合にのみ可能です。 。



    1. ネットワークアダプタが接続を確立できませんでした-Oracle11g

    2. PDO「キャッチされていない例外'PDOException'..他のバッファリングされていないクエリがアクティブな間はクエリを実行できません。 PDOStatement ::fetchAll()の使用を検討してください。」

    3. 日付、時刻を挿入するためのPHPMySQL構文

    4. 複数の行を更新するときにNULLタイプをキャストする