powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Виртуальные и невиртуальные вычисляемые столбцы
7 сообщений из 7, страница 1 из 1
Виртуальные и невиртуальные вычисляемые столбцы
    #39766417
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, ребята!

Подскажите, если я у вычисляемого столбца укажу, что он STORED, данный столбец будет рассчитываться и при добавлении строки и при обновлении строки или только при добавлении строки?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE GeographicalKoordinates (
  Id_GeographicalKoordinates int(11) NOT NULL AUTO_INCREMENT,
  Koordinate geometry NOT NULL,
  TypeKoordinates VARCHAR(50) CHECK (TypeKoordinates IN ('POINT', 'LINESTRING','POLYGON','Other', null)),
  SRID_ INT default null,
  RadiusAction double default NULL,
  AllKoordinatesArea text GENERATED ALWAYS AS (Buffer(Koordinate,RadiusAction)) STORED,
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
...
Рейтинг: 0 / 0
Виртуальные и невиртуальные вычисляемые столбцы
    #39766464
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

вас интересует, есть ли оптимизация пропускающая вызов функции, если аргументы не изменились?
Сомневаюсь, честно говоря. Но точно не скажу.

Меня убивает привычка mysql делать крупные изменения в минорных релизах... Впрочем сомневаюсь, что у вас стоит ещё не вышедший 8.0.16, так что хочу отметить, что помимо неверного in (.. NULL) сравнения (такое выражение всегда NULL) ваш CHECK не проверяется никак. На случай если вы на него рассчитываете, а не просто так писали. Ну и для ограниченного списка строк лучше enum
...
Рейтинг: 0 / 0
Виртуальные и невиртуальные вычисляемые столбцы
    #39766465
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirданный столбец будет рассчитываться и при добавлении строки и при обновлении строки или только при добавлении строки?Вы же указываете - GENERATED ALWAYS. Зачем спрашивать? Впрочем, эта характеристика чисто декоративная - её удаление ни на что не влияет... Да, пересчитывается при любом изменении.
Vlad__i__mirесли я у вычисляемого столбца укажу, что он STORED, данный столбец будет рассчитываться и при добавлении строки и при обновлении строки или только при добавлении строки?STORED влияет на совершенно иную характеристику.
...
Рейтинг: 0 / 0
Виртуальные и невиртуальные вычисляемые столбцы
    #39766466
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkijвас интересует, есть ли оптимизация пропускающая вызов функции, если аргументы не изменились?
Сомневаюсь, честно говоря. Но точно не скажу.Пять минут эксперимента - и ответ готов. Впрочем, он и так известен - да, оптимизация есть.
...
Рейтинг: 0 / 0
Виртуальные и невиртуальные вычисляемые столбцы
    #39766491
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

авторSTORED влияет на совершенно иную характеристику.

А я из интернета понял, что на эту. Поправьте меня пожалуйста и скажите на какую характеристику он влияет?
...
Рейтинг: 0 / 0
Виртуальные и невиртуальные вычисляемые столбцы
    #39766496
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,
MelkijВпрочем сомневаюсь, что у вас стоит ещё не вышедший 8.0.16, так что хочу отметить, что помимо неверного in (.. NULL) сравнения (такое выражение всегда NULL) ваш CHECK не проверяется никак. На случай если вы на него рассчитываете, а не просто так писали.
поправьте меня пожалуйста, покажите как верно прописать?
...
Рейтинг: 0 / 0
Виртуальные и невиртуальные вычисляемые столбцы
    #39766513
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaMelkijвас интересует, есть ли оптимизация пропускающая вызов функции, если аргументы не изменились?
Сомневаюсь, честно говоря. Но точно не скажу.Пять минут эксперимента - и ответ готов. Впрочем, он и так известен - да, оптимизация есть.
не, за 5 минут я могу не вспомнить, как функции в mysql пишутся. А ещё надо поставить mysql 8.0, в общем лениво.

Vlad__i__mirавторSTORED влияет на совершенно иную характеристику.

А я из интернета понял, что на эту. Поправьте меня пожалуйста и скажите на какую характеристику он влияет?
stored влияет на то, что значение вычисляется при записи и хранится физически.
В отличии от virtual, который вычисляется при обращении к нему и никак не хранится.

Vlad__i__mirMelkij,
MelkijВпрочем сомневаюсь, что у вас стоит ещё не вышедший 8.0.16, так что хочу отметить, что помимо неверного in (.. NULL) сравнения (такое выражение всегда NULL) ваш CHECK не проверяется никак. На случай если вы на него рассчитываете, а не просто так писали.
поправьте меня пожалуйста, покажите как верно прописать?
Никак, т.к. в вышедших версиях mysql check банально нет. Синтаксически он есть, но полностью игнорируется.
А в целом выражение, если я верно поминаю что вы хотели получить:
Код: sql
1.
TypeKoordinates is null or TypeKoordinates IN ('POINT', 'LINESTRING','POLYGON','Other')


Или
Код: sql
1.
TypeKoordinates IN ('POINT', 'LINESTRING','POLYGON','Other')


т.к. для check null - допустимое значение по стандарту. В отличии от where, где null рассматривается как повод исключить строку.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Виртуальные и невиртуальные вычисляемые столбцы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]