![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IB. Формирование запроса с расчетом данных по 1 - ой колонке [D6, Win95/98]
erika © (2005-07-29 08:24:00)Здравствуйте!
Возникла проблема: когда я формирую VIEW 3 (на основе двух других VIEW и Table1 - вызываются все поля таблицы удовлетворяющие условию), где производится расчет следующего типа (view1.field1 - view1.field2 - view2.field1 ) field3, и если ранее view1.field1 было null, то field3 получается пустым, и запрос выполняется очень долго, не смотря на то, что в результате запроса появляется всего 100 - 150 записей, максимум 200
Johnmen (2005-07-29 11:03:00) [21]>Lexer © (29.07.05 10:40) [16]
Всё сказанное всё-таки говорит об упущениях и ошибках при проектировании...
Lexer (2005-07-29 10:54:00) [22]http://firebird.sourceforge.net
erika (2005-07-29 10:51:00) [23]где можно скачать Fb - хорошей версии
erika (2005-07-29 10:49:00) [24]> при преобразовании NUMERIC в CHAR(VARCHAR)
Можно поподробнее на эту тему; у меня полей NUMERIC/где количество записывается до кучи/, где можно посмотреть по типам данных Fb
Lexer (2005-07-29 10:40:00) [25]>[15] Johnmen © (29.07.05 10:32)
БД спроектирована нормально, та долго из-за лишком большого количества использования ключевых слов, двойных ковычек в таблицах, процедурах, тригерах, в запросах хранящихся в таблице запросов...
изменение БД, тянуло за собой изменение приложения (это был кошмар)
в БД 197 таблиц, 952 процедуры, и немеренно триггеров...
Еще были роблемы при преобразовании NUMERIC в CHAR(VARCHAR) - получалось так что 1 показывался как 0000001 после преобразования в строку, нули добивались до длины строки.
>Обычно около 1 часа.
об этом я мог только мечтать
Johnmen (2005-07-29 10:32:00) [26]>зы: у мня переход занял почти 2 месяца.
М-да... Круто...
Обычно около 1 часа. Если, конечно, БД спроектирована нормально и не битая.
Lexer (2005-07-29 10:30:00) [27]1. backup на IB
2. restore на FB
но до этого придется просмотрть базу на наличие в именах объектов ключевых слов, специфичных для FB, если такие имена есть, то придется поменять еще и приложение
смотри Migration Guide
зы: у мня переход занял почти 2 месяца.
erika (2005-07-29 10:24:00) [28]База уже существует и в ней работают, как можно сейчас сменить; просто удалить Ib и установить FireBird???!
erika (2005-07-29 10:20:00) [29]Ага-а! СЕйчас попробую!
Lexer (2005-07-29 10:14:00) [30]Извиняюсь, конечно же
COALESCE
Lexer (2005-07-29 10:13:00) [31]
CALESCE(view1.field1,0) - CALESCE(view1.field2,0) - CALESCE(view2.field1,0)
Johnmen (2005-07-29 10:13:00) [32]>erika © (29.07.05 10:01) [7]
Рекомендую сменить на FireBird 1.5
Тогда будет доступна функция COALESCE и много других фич.
Fay (2005-07-29 10:07:00) [33]2 erika © (29.07.05 10:01) [7]
Это сознательное издевательство над собой!
erika (2005-07-29 10:01:00) [34]Версия 6.0.1.6
Johnmen (2005-07-29 09:12:00) [35]>Fay © (29.07.05 09:03) [5]
IB, о чём и сказано в теме. Вот только версия неизвестна...:)
Fay (2005-07-29 09:03:00) [36]2 erika © (29.07.05 8:48) [4]
СУБД, конечно, Informix?
erika (2005-07-29 08:48:00) [37]Мне просто необходимо вывести 0 в этой поле
Fay (2005-07-29 08:47:00) [38]2 Digitman © (29.07.05 8:41) [1]
>> null это и есть "ничто" !
Я бы сказал, что это неопределённое значение. Хотя, действительно, про такое значение нельзя сказать, что оно есть "конкретно кое-что" 8).
erika (2005-07-29 08:45:00) [39]а можно вместо ничто view1.field1 поставить 0
Digitman (2005-07-29 08:41:00) [40]
> если ранее view1.field1 было null, то field3 получается
> пустым
как можно из ничего вычесть что-то и в результате получить что-то ?
null это и есть "ничто" !
> запрос выполняется очень долго
это уже проблемы грамотного проектирования базы + эффективного использования индексов + оптимизация запросов