Я хочу сохранить трехмерные векторные изображения в моем MariaDB, но я считаю, что получение данных занимает слишком много времени, чтобы быть практичным.
У меня есть несколько таблиц:
таблица точек, содержащая координаты x, y и z плюс идентификатор сущности,
таблица сущностей, содержащая уникальный идентификатор, тип сущности (текст, линия, полилиния и т. д.) и другие общие атрибуты, такие как цвет и тип линии,
и некоторые вспомогательные таблицы, содержащие дополнительные значения, такие как текст, высота текста, толщина линий и флаги, разделенные на отдельные таблицы в зависимости от типа поля (varchar, int или float).
Я получаю доступ кданные через PHP выглядят следующим образом:
if($result = mysqli_query($conn, "SELECT entityID,X,Y,Z FROM dwgpoints WHERE drawing=".$DrawingID." AND blockID=".$blockID.";"))
{
$previous_eID=0;
while($row = mysqli_fetch_array($result))
{
$eID=$row['entityID'];
if($previous_eID!=$eID)
{
if($previous_eID)// confirm it's not zero
renderEntity($image_handle,$DrawingID,$previous_eID,$etype,$colour,$ltype,$points, $transformation, $clip);
$previous_eID=$eID;
if($eResult=mysqli_query($conn,"SELECT colour,ltype,etype FROM entity WHERE drawing=".$ID." AND eID=".$eID.";")){
$erow=mysqli_fetch_assoc($eResult);
$colour=$erow['colour'];
$ltype=$erow['ltype'];
$etype=$erow['etype'];
$points=[[$row['X'],$row['Y'],$row['Z']]];
}
}else{
$points[]=[$row['X'],$row['Y'],$row['Z']];
}
}
}
Этот процесс занимает до десяти минут, но я знаю, что Openstreetmaps, например, визуализирует плитки из аналогичных объемов данных.
Результатыдиректива EXPLAIN выглядит следующим образом:
MariaDB [wptest_11]> EXPLAIN SELECT entityID,X,Y,Z FROM dwgpoints WHERE drawing=2 AND blockID=-1;
+------+-------------+-----------+------+---------------+--------+---------+-------------+-------+-----------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-----------+------+---------------+--------+---------+-------------+-------+-----------------------+
| 1 | SIMPLE | dwgpoints | ref | idx_id | idx_id | 9 | const,const | 24939 | Using index condition |
+------+-------------+-----------+------+---------------+--------+---------+-------------+-------+-----------------------+
Можно ли упростить поиск данных, чтобы сделать процесс управляемым? У меня дешевый VPS, так что могут быть проблемы с производительностью оборудования, в этом случае обновление будет иметь большое значение? Или мне нужно переосмыслить свой подход?
Любой совет будет приветствоваться.