Mysql
 sql >> база данни >  >> RDS >> Mysql

повишаване на производителността при SELECT заявка с голям набор от 3D точкови данни

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Колона зависи от друга стойност на колоната

  2. java mysql подготвено изявление

  3. MySQL - ГРЕШКА 1045 - Достъпът е отказан

  4. Auto_increment стойности в InnoDB?

  5. Сравняване на Oracle MySQL, Percona Server и MariaDB