Я хочу использовать числа с фиксированной точкой для таблицы, всегда с 3 десятичными знаками. У меня есть пример таблицы, такой как:
create table coordinates (id serial, x integer, y integer, z integer);
Это будет иметь сотни тысяч строк, но, вероятно, не будет вставляться / обновляться очень часто после загрузки начального набора данных. Но это будет боль, если придется делать математику, чтобы разделить каждого из них на тысячу в каждом месте, где это используется. Мне пришло в голову, что представление может быть подходящим:
create view coordinates_adjusted as
select id, x/1000::real as x, y/1000::real as y, z/1000::real as z
from coordinates;
Это, конечно, работает как ожидалось, и я не ожидаю каких-либо проблем с производительностью.
Есть ли способ вставить / обновить это представление с помощью номеров с фиксированной точкой, чтобы они затем умножались на 1000, а затем вставлялись / обновлялись в базовой таблице? Postgres, кажется, поддерживает вставки в представлении, но не в тех случаях, когда представление является сложным. Хотя я не буду часто обновлять, это все равно будет происходить, и поэтому я хотел бы быть последовательным на протяжении всего проекта.
Лучше ли я использовать числовые / десятичные числа для этих столбцов? Какого рода проблемы с производительностью можно ожидать, если бы я это сделал? Мне не нужно где-то близко к этому уровню точности, и я ожидаю, что все мои данные будут хорошо вписываться в пределах значений со знаком 4 байта. Мне не нужен масштаб выше 3 или точность выше 13 или около того. Но со значениями, являющимися координатами, я буду интенсивно использовать их с математикой.