Я хочу хранить WKT, который может быть довольно большим, но я бегу в предел 32K, сохраняя их в значениях объекта.Есть ли альтернатива 32K строковым ограничениям?
create table A (id integer, wkt object);
Я хочу хранить WKT, который может быть довольно большим, но я бегу в предел 32K, сохраняя их в значениях объекта.Есть ли альтернатива 32K строковым ограничениям?
create table A (id integer, wkt object);
Так есть способ для хранения длинных строк в объектах:
CREATE TABLE IF NOT EXISTS A (
"id" INTEGER,
"wkt" OBJECT (IGNORED)
)
Используя ignored весь объект не индексируется, который также запрещает его использование в других частях SQL должным образом (они всегда будет выполнять полное сканирование таблицы).
Однако индексы работают нормально.
Для других читателей: WKT также может быть сохранен как тип geo_shape, либо используется с match directly.
Как вы храните данные в объекте? это свойство, подобное wkt ['str']? В противном случае я бы рекомендовал вам хранить его в виде строки или geo_shape (в зависимости от ваших требований) – claus
@claus мы используем значение ключа, потому что мы не знаем заранее, что будет представлять wkt, и может быть несколько типов геометрии wkt для каждой связанной формы. Например, многоугольник может иметь wkt для различных буферов, альфа-форм, допусков на упрощение, ... сгладить этот объект в таблицу выполнимым, но это было просто приятно, потому что оно сохраняет все данные как одну строку. Мое понимание geo_shape заключается в том, что мы не можем напрямую получить wkt обратно, и нам нужен wkt для выполнения пространственных запросов (см. Мой другой вопрос http://stackoverflow.com/questions/41286539) – nicerobot
Да, вы не можете получить WKT обратно при использовании geo_shape ... и теперь это зависит от того, знаете ли вы ключи перед их вставкой, поскольку вы можете предварительно определить INDEX OFF (или INDEX ИСПОЛЬЗОВАНИЕ PLAIN, ...) для каждого ожидаемого столбца, который затем позволит вам вставить WKT string :) – claus