Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / можно ли в аса делать вычисляемые поля на вычисляемые поля / 5 сообщений из 5, страница 1 из 1
15.10.2004, 17:16
    #32740993
можно ли в аса делать вычисляемые поля на вычисляемые поля
АСА 9


Спасибо
...
Рейтинг: 0 / 0
15.10.2004, 18:05
    #32741094
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в аса делать вычисляемые поля на вычисляемые поля
Попробуй, нам тоже интересно ;).
...
Рейтинг: 0 / 0
15.10.2004, 18:29
    #32741144
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в аса делать вычисляемые поля на вычисляемые поля
Главное не переусердствовать с ними. Руководствоваться решением ввода вычисляемых полей лучше исходя из следующих соображений:
1. требуется сделать индекс на вычисляемое поле из за частого использования выражения вычисляемого поля в фильтре у запросов (например у нас есть поле типа Date и мы часто в запросах ставим условие Year(Date) = <Значение>).
2. требуется большая скорость работы с ними - в ASA они хранятся как обычные, то есть занимают физическое пространство в БД и соответствующе сами их вычисления происходят в момент вставки и обновления записей. Естественно помнить о том что БД будет с ними больше весить тоже не помешает.

Если всего этого не требуется, то рекомендую вместо них делать представления, где алиасами и добавлять нужные вычисляемые колонки. Так же категорически рекомендую ни использовать в вычисляемых полях собственные функции или глобальные переменные, будут очень большие проблемы с операцией перегрузки БД (этот же совет относится и к использованию функций и переменных в представлениях). В таких случаях лучше делать хранимые процедуры и их использовать в запросах.
...
Рейтинг: 0 / 0
17.10.2004, 00:14
    #32741642
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в аса делать вычисляемые поля на вычисляемые поля
ASCRUS(например у нас есть поле типа Date и мы часто в запросах ставим условие Year(Date) = <Значение>).
А если вместо условия Year(Date) = <Значение> написать
Date >= YMD(<Значение>, 1, 1) and Date < YMD(<Значение> + 1, 1, 1) ?
...
Рейтинг: 0 / 0
17.10.2004, 11:34
    #32741691
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли в аса делать вычисляемые поля на вычисляемые поля
Dim2000 ASCRUS(например у нас есть поле типа Date и мы часто в запросах ставим условие Year(Date) = <Значение>).
А если вместо условия Year(Date) = <Значение> написать
Date >= YMD(<Значение>, 1, 1) and Date < YMD(<Значение> + 1, 1, 1) ?
Все зависит для чего Вам это нужно. Если просто так получить все записи за год, то можно и просто поле Date проиндексировать. Если же в запросе еще куча условий на эту таблицу, то Year(Date) будет работать быстрее и эффективнее, так как тут будет равенство, а в Вашем варианте BETWEEN менее эффективен, плюс для составных индексов он всегда означает, что следующие поля индекса уже оптимизатором в запросе использоваться не будут.

Так же вычисляемые поля удобны для организации поиска по полям с большим размером. Например нужно найти запись по полю varchar(200). Делать по этому полю индекс было бы накладно с точки зрения его эффективности и размеров в БД. Легче сделать индекс на вычисляемое поле LEFT(Field, 2) и в запросе искать по условию: ComputedField = Left(<Значение>, 2) AND Field = <Значение>. В итоге будет использован индекс поиска значения по первым 2 буквам, далее уже по найденной ветке индекса на все записи будет применено сканирование по поиску полного соотвествия значения. Пример мной был взят из книги Брека Картера, там довольно много интересных решений (см FAQ , SQL Anywhere Studio 9 - Developers Guid).
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / можно ли в аса делать вычисляемые поля на вычисляемые поля / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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