Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zwiększenie wydajności w zapytaniu SELECT z dużym zbiorem danych punktów 3D

B-Tree indeksy niewiele pomogą w takim zapytaniu.

Czego potrzebujesz jako R-Tree indeks i minimalnie ograniczające równoległościenne zapytanie nad nim.

Niestety, MySQL nie obsługuje R-Tree indeksy ponad 3d punkty, tylko 2d . Możesz jednak utworzyć indeks na, powiedzmy, X i Y razem, co będzie bardziej selektywne niż którekolwiek z B-Tree indeksy na X i Y sam:

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;

Jest to możliwe tylko wtedy, gdy Twoja tabela to MyISAM .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie listy zawierającej wiele wartości w MySQL za pomocą pymysql

  2. Wybierz datę MySQL równą dzisiejszej

  3. jak przekonwertować podzapytanie mysql w yii CDbCriteria?

  4. Połączenie urządzenia z systemem Android z serwerem localhost

  5. Jak uzyskać listę przedmieść otaczających lokalizację, a następnie powtórzyć dla innych lokalizacji za pomocą MySql?