Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Вниз

select distinct   Найти похожие ветки 

 
Beer   (2002-09-04 17:26) [0]

Уважаемые мастера!
При попытке выполнения запроса select distinct [field_name] from [view_name]IBExpert зависает, а если FIBами пользуемся, то ошибка "DataSet open"... Выборка именно из view, а не table.
В чем могут быть возможные причины?


 
Val   (2002-09-04 17:47) [1]

текст обзора?


 
Beer   (2002-09-04 17:52) [2]

Дело в том, что view создается динамически, т.е. заранее неизвестно, какие ограничения там будут, но все идет из одной таблицы, т.е. просто ограничение по значениям полей.

Ну, например

create view V1(field1, field2, field3)
as
select field1, field2, field3
from table
where field2=value1 and field3 in (val2, val3)


А запрос потом

select distinct field1 from V1

Или нужна точная структура таблицы и тексты?


 
Val   (2002-09-04 18:04) [3]

погодите, обзор - метаданные бд, то есть никакой динамики - вы или создаете статически обзор и работает с ним, либо (вроде ваш вариант) создаете, работаете с ним, удаляете, создаете с тем же именем и т.д. - так я вас понял?


 
Romkin   (2002-09-04 18:11) [4]

кошмар! Не знаю, как в IB6, но в 5 версии допускалось не более 256 изменений метаданных (обнуляется после backup/restore), так можно и влететь...
А View в IB тормозят, лучше применять хранимые процедуры, да и читабельнее
А что, с клиента запрос нельза сформировать и вызвать?


 
Beer   (2002-09-05 10:21) [5]

>Val Ну да, именно так, просто с точки зрения программы клиента это динамика..

>Romkin Можно конечно и с клиента, но дело в том, что потом его не раз придется пробегать туда-сюда, т.е. работать с каждой записью и я подумал, что на сервере с помощью курсоров это будет выгоднее делать.. Ты считаешь, что view работает медленнее, чем процедура c suspend? Даже если это так, то процедуру из программы тоже нуно будет как-то динамично создавать, или запрос формировать внутри процедуры, что можно сделать с помощью сбора запроса из строк, но IB нет механизма выполнения запроса из строки, как например в Informix или я просто что-то не знаю?


 
Romkin   (2002-09-05 10:38) [6]

И как тебе курсор на сервере IB?
На самом деле, как только открываешь запрос, это и есть курсор, и если не указал UniDirectional, бегай туда-обратно сколько угодно, после фетчинга всех записей Query к серверу не обращается, пока изменений не сделаешь
В IB нет выполнения запроса из переменной, только по запросу с клиента
Хранимая процедура с suspend выполняется быстрее всего, тем более, что сложный запрос в ней лучше делать по частям (листаем одну таблицу, и выбираем остальные поля из других таблиц внутри for)
IB 5 позволяет только 256 изменений метаданных, так что формировать процедуру динамически не пройдет, да это и дурной тон
Если есть критерии выбора, которые есть в любом случае, сделай процедуру для них, а на клиенте просто формируй where к ее вызову по остальным параметрам.
Но тебе легче просто формировать запрос на клиенте, и никаких view и процедур не надо


 
Beer   (2002-09-05 11:33) [7]

Спасибо!! Буду переделывать... =о)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
7-85723
DAO
2002-07-17 07:50
2002.09.26
Делитель целой и дробной части чисел....


1-85605
Malcolm
2002-09-15 12:32
2002.09.26
Определение версии Винды


7-85715
Alex
2002-07-16 19:04
2002.09.26
Modem


14-85682
spROOT13
2002-09-01 17:09
2002.09.26
Темы XP


1-85423
deleon
2002-09-13 09:27
2002.09.26
Как в программе написать проверку целостности ее кода?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский