powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase SA (ASA): Что лучше Computed by или trigger ?
6 сообщений из 6, страница 1 из 1
Sybase SA (ASA): Что лучше Computed by или trigger ?
    #37418213
Stalker4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi All,

Есть обычная таблица, в таблице есть поле X1.
Данные в поле X1 формируются путем некоторых преобразований (посредством UDF)
других полей этой же таблицы.

Есть два варианта как данные записывать в поле X1.

1) Через конструкцию Computed By (вычисляемое поле)
2) Через trigger after insert, update.

Вопрос: Какой из этих вариантов менее затратный по ресурсам с точки зрения
сервера ?
Особенное с учетом того, что по полю X1 будет индекс (скорее всего
уникальный) и по этому полю будет часто делаться поиск.
...
Рейтинг: 0 / 0
Sybase SA (ASA): Что лучше Computed by или trigger ?
    #37418247
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предпложу, что первый способ будет быстрее. Все таки вставка/обновление будет идти в одной операции/транзакции. В случае триггера механизм с точки зрения затрат на транзакцию выглядит тяжелее.
...
Рейтинг: 0 / 0
Sybase SA (ASA): Что лучше Computed by или trigger ?
    #37418371
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldпредпложу, что первый способ будет быстрее. Все таки вставка/обновление будет идти в одной операции/транзакции. В случае триггера механизм с точки зрения затрат на транзакцию выглядит тяжелее.
Присоединяюсь - первый способ будет менее затратен. Эквивалентом ему так же можно назвать триггера BEFORE INSERT/UPDATE.
...
Рейтинг: 0 / 0
Sybase SA (ASA): Что лучше Computed by или trigger ?
    #37419086
Stalker4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вместо триггера after insert, update я вполне могу использовать триггер before insert, update, если это по скорости эквивалентно computed by.


Но мне казалось что любой триггер (и after и before) будет быстрее (менее затратен для сервера) чем computed by, ведь в триггере данные в поле X1 будут присваиваться только в момент insert и update таблицы, а computed by возможно вычисляется (хотя тут я точно не уверен) динамически, в момент обращения к этому полю, ведь данные для вычисления computed by поля могут через UDF браться на стороне (например из другой таблицы).

Или я не прав в своих рассуждениях ?
...
Рейтинг: 0 / 0
Sybase SA (ASA): Что лучше Computed by или trigger ?
    #37419547
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalker4Ну вместо триггера after insert, update я вполне могу использовать триггер before insert, update, если это по скорости эквивалентно computed by.


Но мне казалось что любой триггер (и after и before) будет быстрее (менее затратен для сервера) чем computed by, ведь в триггере данные в поле X1 будут присваиваться только в момент insert и update таблицы, а computed by возможно вычисляется (хотя тут я точно не уверен) динамически, в момент обращения к этому полю, ведь данные для вычисления computed by поля могут через UDF браться на стороне (например из другой таблицы).

Или я не прав в своих рассуждениях ?
Computed By это обычное поле, которое хранит значения, которые вычисляются каждый раз при добавлении или изменении записи. Ничем они по скорости от BEFORE триггеров отличаются не будут, фактически это одно и тоже. При SELECT же уже берутся сохраненные значения в таблице. Если вычисляемое поле ссылается на глобальную переменную или функцию, то правилом хорошего тона можно считать вынос логики вычисления значения в триггер, не будет в дальнейшем проблем с перезагрузкой БД или внезапным падением сервака (все в жизни бывает). Ну, а если хочется сделать поле, которое должно каждый раз динамически вычисляться при обращении к записи - для этого и существуют представления (view).
...
Рейтинг: 0 / 0
Sybase SA (ASA): Что лучше Computed by или trigger ?
    #37448918
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalker4
динамически, в момент обращения к этому полю, ведь данные для вычисления computed by поля могут через UDF браться на стороне (например из другой таблицы).

Или я не прав в своих рассуждениях ?
а вот что написано в мануале по поводу вычисления computed by

Recalculating computed columns
Values of computed columns are automatically maintained by the database server as rows are inserted and updated. Most applications should never need to update or insert computed column values directly.

Computed columns are recalculated under the following circumstances:

Any column is deleted, added, or renamed.
The table is renamed.
The table is changed by an ALTER TABLE statement that modifies any column's data type or COMPUTE clause.
A row is inserted.
A row is updated.

Computed columns are not recalculated under the following circumstances:
The computed column is queried.
The computed column depends on the values of other rows (using a subquery or user-defined function), and these rows are changed.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase SA (ASA): Что лучше Computed by или trigger ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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