Пространственный индекс не будет использоваться, поскольку у него нет атрибута SRID.MySql

Форум по Mysql
Ответить
Anonymous
 Пространственный индекс не будет использоваться, поскольку у него нет атрибута SRID.

Сообщение Anonymous »

Я сейчас очень запутался, потому что не могу заставить это работать. У меня есть tbl_address, в котором уже указаны долгота и широта. Я хочу добавить пространственный индекс для моего поиска. Итак, я хочу добавить столбец местоположения POINT в свою базу данных. Я попробовал вот это:

Код: Выделить всё

alter table tbl_address
add column location POINT GENERATED ALWAYS AS (ST_SRID(POINT(longitude, latitude), 4326)) STORED NOT NULL;
Но когда я затем пытаюсь добавить свой SI, я получаю обратно следующее предупреждение:

Код: Выделить всё

CREATE SPATIAL INDEX idx_location ON tbl_address (location);
0 row(s) affected, 1 warning(s): 3674 The spatial index on column 'location' will not be used by the query optimizer since the column does not have an SRID attribute. Consider adding an SRID attribute to the column. Records: 0  Duplicates: 0  Warnings: 1
Я понимаю, что только мои записи имеют идентификатор 4326 srid, но если я попытаюсь добавить его в сам столбец (POINT SRID 4326), я получаю синтаксическую ошибку в сообщении GENERATED ALWAYS AS.
Как заставить это работать? Было бы здорово обновлять местоположение при изменении долготы/широты. Действительно ли мне нужно реализовать триггер? Я использую MySQL 8.
Спасибо!
Изменить:
Моя версия mysql — 8.0.43-0ubuntu0.22.04.1, и это тестовая таблица, которую я использую:

Код: Выделить всё

CREATE TABLE IF NOT EXISTS tbl_address
(
address_id int not null auto_increment,
latitude DECIMAL(9,2) NOT NULL default 0,
longitude DECIMAL(9,2) NOT NULL default 0,
location POINT not null SRID 4326,
Primary Key (address_id)
);
Не знаете, почему у вас это работает, ребята, может быть, это проблема конкретной версии?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -attribute
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»