Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 10тысяч записей! - разве это много????!!!!!!!! / 20 сообщений из 20, страница 1 из 1
22.08.2003, 03:28
    #32243990
DenDer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
Привет населению!!!!!!!!
Обьясните, пожалуйста, почему так медленно всё происходит?
Суть:
Мне нужно сделать запрос из Базы по нескольким критериям, ну вот, я его делаю.
Но в базе для экономии размера предусмотрен словарик.
То-есть в нужном поле таблицы вместо текста стоит число: id - определения из словаря.
В общем, получив запрос, теперь мне нужно заменить эти цыферки, на то, что они означают (по словарю).
А так как в Делфи запрос, это обычная таблица, только она создаётся в run-time и отличается она от обыкновенной таблицы вшитым свойством read-only, то для того, чтобы изменить полученные записи, их нужно сначала скопировать в простую таблицу, а потом менять.
ну вот так я и делаю
Ну если делать "хороший" запрос (ну чтобы результатом было ~500
записей)- не заметно, а если сделать запрос, чтобы в таблицу попали
все 10000 записей - работает долговато (у меня 3 сек. на Duron800), так это я
только копирую с запроса в таблицу, а теперь ещё нужно
заменить значения (с цыфер на текст) в 9 столбцах: 10000*9 и того ещё
90000 замен - это где-то опять будет ~3 сек.

Может я что не то делаю?
Может есть способ по-лучше?
...
Рейтинг: 0 / 0
22.08.2003, 03:36
    #32243992
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
я не понял, ты юзаешь компонент TIBTable???
если так, то это и есть ответ на твои тормоза... используй Query...
...
Рейтинг: 0 / 0
22.08.2003, 04:02
    #32243994
Fighter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
Если тебе нужен модифицируемый запрос, чтоб потом можно было прям в гриде править, то это легко реализуется в FIBPlus (но он платный, для русских около 19$, деньги не большие, зато продукт просто чудо)
...
Рейтинг: 0 / 0
22.08.2003, 08:37
    #32244054
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
> Если тебе нужен модифицируемый запрос....
> ...около 19$...

Можно и бесплатно.
Переходи на трёхзвенку. Программировать клиентское приложение, в этом случае одно удовольствие, модифицируется ВСЁ что угодно, абсолюнто любой DataSet.
К тому-же, если в Query надо поменять порядок сортировки, на двух-звенке придётся менять директиву ORDER BY и выполнять запрос к серверу заново и ждать. На 3-х звенке в TClientDataSet это произойдёт сразу, как только пожелаешь, сервер БД и спрашивать не надо!!!

Если у кого-то ужасает сложность перехода на 3-х звенную архитектуру, какие-либо "непонятки" или "раздутые" проблемы тех, у кого неполучилось - спрашивайте научу. У меня проблем нет.

Выберите форум и тему.
...
Рейтинг: 0 / 0
22.08.2003, 11:33
    #32244344
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
>Zmeishe

Заради ORDER BY делать трехзвенку ?! :)

Если использовать FIB, то там есть локальная сортировка.

>DenDer

Если работаешь через BDE, то жми F1 на свойство RequestLive и CashedUpdates класса TQuery.
Если используешь библиотеки прямого доступа (IBX/FIB), то смотри свойства SelectSQL и т.д. класса T(pF)IBDataSet.
...
Рейтинг: 0 / 0
22.08.2003, 14:55
    #32244765
KiLLun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
to Zmeishe
А где взять бесплатный FIBPlus?
...
Рейтинг: 0 / 0
22.08.2003, 15:00
    #32244786
Maks_f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
Во первых проверь:
1. Все ли индексы и форинкеи ты сделал на таблицы справочники.
2. Как ты вытягиваеш данные из таблицы, т.е. есть по критериям индексы.
3. Полностью согласен с первым ответчиком никаких Table'ов лучше запрос в Query либо Хранимая процедура и Query.
Думаю этим проблема и исчерпывается
...
Рейтинг: 0 / 0
22.08.2003, 15:00
    #32244788
Maks_f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
Во первых проверь:
1. Все ли индексы и форинкеи ты сделал на таблицы справочники.
2. Как ты вытягиваеш данные из таблицы, т.е. есть по критериям индексы.
3. Полностью согласен с первым ответчиком никаких Table'ов лучше запрос в Query либо Хранимая процедура и Query.
Думаю этим проблема и исчерпывается
...
Рейтинг: 0 / 0
22.08.2003, 17:10
    #32245080
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
>А где взять бесплатный FIBPlus?
Я имею ввиду не бесплатный FIBPlus, а переход на 3-х звенку.
Я использую IB-компоненты исключително из стандартной поставки Билдера.
Они нужны мне только как контейнеры для хранения текста SQL для SELECT, INSERT, UPDATE, DELETE.
Вся кухня по модификации данных у меня на третьем звене.

Таких проблем по модификации данных в DBGrid или где ещё, о которых пишут в этих форумах про IBX, FIB, BDE, ADO для меня просто не существует.
Мне иной раз смешно когда пишут, что это типа DBGrid кривой.

Если кто-то считает, что для маленькой задачи не рационально делать 3-х звенку, то я и не собираюсь Вас переубеждать и тем более спорить.

Что касается меня, то мне необычайно удобно с 3-х звенкой и я не знаю и 80% тех проблем, что на 2-х звенке с IBX, FIB, BDE, ADO.
Хотя я их тоже использую (IB для IB и ADO для MS-SQL), но только как контейнеры, т.е. для работы с БД, а не для визуализации или модификации данных со стороны пользователя.

Вот так! Окончательный выбор всё равно за Вами, друзья.
...
Рейтинг: 0 / 0
22.08.2003, 18:30
    #32245187
KiLLun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
Да уж про 3-звенку я начитался в форуме по Delphi...
...
Рейтинг: 0 / 0
23.08.2003, 03:28
    #32245350
DenDer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
>StarWind
Да, выходит, что так - я юзал TIBTable, а вот как прикрутить TQuery, я не знаю - от же из BDE, а я работаю с IB.
>Johnmen
Я пытался получить данные через этот компонент TIBDataSet, ну он работает - запрос получается, а когда хочу изменить данные в нём - Cannot modify a read-only dataset.
В компонентах IB отсутствует свойство RequestLive - поэтому, просто сказать компоненту, что мол: "Дружище - пора менятся!!!!!!" я не могу (может и могу, только не знаю как) .
...
Рейтинг: 0 / 0
23.08.2003, 11:39
    #32245380
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
вообще, я использую только 3 компонентa, TFIBDataSet, TFIBTRANSACTION, TFIBDATABASE

гриды свои, нафига дбгрид нужен? как мне нужно отобразить данные, так я их и отоброжаю, больше чем поместится на экране данных не выбираю... производительность не страдает, на удобство пока жалоб небыло... в общем, это я к тому, что все эти наворотченные компоненты, дают мало толку, в основном в стандартных ситуацыях, очень сильно ограничивают возможности, сужают мышление и отучают от sql
...
Рейтинг: 0 / 0
23.08.2003, 19:26
    #32245456
cloner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
народ для чайника3-х звеннуа архитектура, что да как?
...
Рейтинг: 0 / 0
23.08.2003, 21:55
    #32245471
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
3-х звенка это на любителя(профессионала).
вообще, суть не в трех звеньях, а в многомодульности.
логика работы твоей системы разбивается на три крупных блока:
клиент(интерфейс) - среднее звено(бизнеслогика) - сервер бд(хранения данных).

в обычных системах среднее звено распределено (в разных пропорциях, в зависимости от реализации) между крайними звеньями. часть бизнеслогики выпоняется на клиенте(рассчет формул, связки объектов системы) а часть на сервере(ХП, транзакции, ссылочная целостность).

вообще мне кажется, что чем больше в системе модулей тем она потенциально опасней к сбою, но гибче в настройке, масштабировании и пр.

вполне можно представить себе и четырех звенную систему.

клиент(браузер)-вебсервер-серверлогики-сервербд
...
Рейтинг: 0 / 0
24.08.2003, 07:51
    #32245532
Серж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
Zmeishe, дай свой емайл, или мне напиши (у меня емайл указан в профиле). Есть несколько вопросов по теме 3-х звеньев. Если есть время, конечно.
...
Рейтинг: 0 / 0
24.08.2003, 08:28
    #32245533
cloner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
бальшое спасибо! за просвещение
...
Рейтинг: 0 / 0
25.08.2003, 03:16
    #32245672
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
DenDer
Сорри выпустил пару символов с названием компонента
переходи на TIBQuery , такой есть на палитре InterBase . при переходе особых познаний не потребуется. В свойстве SQL прописываешь скрипт, подключаешь компонент UpdateSQL и наслаждаешься жизнью. Все остальное будет работать точно также
...
Рейтинг: 0 / 0
25.08.2003, 03:56
    #32245675
DenDer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
>StarWind
Спасибо за совет, только я вот этим TIBQuery и пользуюсь.
Да я уже то что мне нужно сделал по-другому (я просто подменяю текст в Гриде), може и тупо, зато работает быстро.
Но был бы благодарен, если бы мне обьяснили как прикрутить UpdateSQL к чему-нибудь - я пробывал, у меня ничего толькового не получается - оно мне только данные партачит.
...
Рейтинг: 0 / 0
25.08.2003, 04:40
    #32245679
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
в свойстве UpdateObject указыываешь объект IBUpdateSQL.
а в последнем в соответствующих полях пишешь скрипты на изменение данных и все...
единственное, список команд в этих полях ограничевается набором Insert, Update, Delete, Select
...
Рейтинг: 0 / 0
26.08.2003, 03:09
    #32246910
DenDer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
10тысяч записей! - разве это много????!!!!!!!!
>StarWind
Спасибо!
Нужно будет попробовать
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 10тысяч записей! - разве это много????!!!!!!!! / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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