Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ibase тормоза [D5, IB6.x]


Страницы:   1 2

SasaR ©   (2004-01-19 17:54:00) 

Не сказал бы, что процедура моя возвращает много данных (20 -30 тыс.строк), но несколько первых тысяч видны в гриде, но при попытке "ехать" вниз или в цикле while not eof do Next сильнейшие тормоза, длящиеся часами...
Что я такого наделал (в смысле может совершил к-ть распространённую ошибку ?)
Как избежать подобного ?


Term   (2004-01-20 12:08:00) [1]


> Danilka © (20.01.04 11:54) [26]
> [25] Term © (20.01.04 11:49)
> Ушло на почту в анкете.

Спасибо скачал :)))


Danilka   (2004-01-20 11:54:00) [2]

[25] Term © (20.01.04 11:49)
Ушло на почту в анкете.


Term   (2004-01-20 11:49:00) [3]


> 2 Danilka ©

Вышли плиз... :)))


Danilka   (2004-01-20 11:40:00) [4]

Есть FlexCel - компонент, который умеет сам "рисовать" экселевские файлы на основе шаблонов, без ОЛЕ, по-идее, должно быть быстрее и менее прожорливо, чем через ОЛЕ.
До версии 2.5.3 он шел бесплатно с исходниками, сечай его прибрала к рукам TMS Group и он стал платным, могу выслать версию 2.5.3


Term   (2004-01-20 11:34:00) [5]


> 2 Карелин Артем © (20.01.04 11:24) [20]

ну я тоже в принципе OLE использую, и макросы которые в экселе создаются, применяю к делфовым COM-объектам... или может у тебя комп навороченный судя по этому:

> и занимает в памяти полгига

у меня оперативы существенно меньше, или ты по другому делаеш, тогда хоть в общих чертах просвети


Карелин Артем   (2004-01-20 11:28:00) [6]

В программулине от EMS есть возможность просмотра плана. Без плана жить нельзя :)


SasaR   (2004-01-20 11:25:00) [7]

To Term и мне интересно...
Кстати Автор выражает всем благодарность и посыпает голову песком. Проблема была в лишнем индексе по ненужным в данном случае полям и его Ibase брал первым.... Каюсь :))


Карелин Артем   (2004-01-20 11:24:00) [8]

Term © (20.01.04 11:19) [19]
Ловкость рук и немного OLE. Стукнись в асю - покажу. Но не сегодня.


Term   (2004-01-20 11:19:00) [9]


> Только не надо насчет медленного вывода в ексель!! У меня
> вывод 60 000 записей 20 полей идет 5 минут. Это при том,
> что набор данных однонаправленный и занимает в памяти полгига.


а ты какими компонентами пользуешся???


Карелин Артем   (2004-01-20 11:16:00) [10]

Только не надо насчет медленного вывода в ексель!! У меня вывод 60 000 записей 20 полей идет 5 минут. Это при том, что набор данных однонаправленный и занимает в памяти полгига.


Sergey13   (2004-01-20 11:16:00) [11]

2Danilka © (20.01.04 11:05) [12]
>А есть какой-нибудь пример, когда ответ на вопрос 1 - все таки "Да"? Что-то не могу представить.
Ты меня спрашиваешь?
Я могу предположить только отчет. Но в грид... Это за рамками моего понимания. 8-)


SasaR   (2004-01-20 11:15:00) [12]

Я пользую IBExpert. Тормоза - в его гриде :))
Такие же тормоза в моей клиентской программе (там нет грида), но есть фетч, как я выше описал :) Столько данных мне не нужно в гриде, но нужно периодически импортировать их в Эксель.
Индексы есть (IBExpert пишет "не натурал" и всё не красненькое).
Процедура разбита на 4-участка:
Курсоры по:
1. select поля from store where (CROSS_CLI=9)and(CLARICHEV is not null)

2. select поля from store where (CROSS_CLI<>9)and(TOV_COD is not null)

3. select поля from store where ((cross_cli=9)and(clarichev is null))or((cross_cli<>9)and(tov_cod is null))

4. select count(*) from store where (CROSS_CLI is null)
Работало такое сутками.
Тогда я таблицу store дублировал 4-е раза под каждый из случаев
И теперь 2-й запрос(вернее там FOR select CROSS_CLI, TOV_COD from store_2 group by CROSS_CLI, TOV_COD
into :out_cross_cli, :out_tov_cod
do... дальше еще всякие вычисления) фетчит всё такими дикими рывками. Хотя в остальных всех всё плавно, довольно быстро, хотя используются подобные запросы (group by)... может потому, что в первом случае group by по 9-ке и чему угодно, а во втором разные комбинации....


Desdechado   (2004-01-20 11:11:00) [13]

MemoryDataSet тормознутый на таких объемах. Что, напрямую из TFIBquery слабо сделать экспорт?


Term   (2004-01-20 11:09:00) [14]


> А есть какой-нибудь пример, когда ответ на вопрос 1 - все
> таки "Да"? Что-то не могу представить

А может автору имеет смысл просветить нас насчёт предметной области??? я чтото за всю жизнь юзеру 30тыш строк за раз в грид не выдавал, и никакой даже самый извращенный и злобный юзер такого не просил :)))


Danilka   (2004-01-20 11:06:00) [15]

в догонку: репликация и т.д. в качестве примера не предлагать, только такие примеры, где все это хозяйство вываливается в грид. :))


Danilka   (2004-01-20 11:05:00) [16]


> [10] Sergey13 © (20.01.04 10:54)
> 2. Если ответ на вопрос 1 - все таки "Да",

А есть какой-нибудь пример, когда ответ на вопрос 1 - все таки "Да"? Что-то не могу представить.


Term   (2004-01-20 10:59:00) [17]

а и зачем для такой задачи писать ХП, если из 80тыс, вибирается 30тыш, попробуй сделать тоже самое запросом, создай индексы, может так скорость увеличится, да и кому надо 30000 записей в Excel, тут тормоза будут еще большие!!!


Sergey13   (2004-01-20 10:54:00) [18]

Я бы пошел по такому пути:
1. Ответил бы на вопрос - 30000 записей сразу надо? Сомнительно чтой то шибко.
2. Если ответ на вопрос 1 - все таки "Да", то вылизывать процедуру на предмет оптимизации. Например, на поле которое <>9 индекс есть?

>может быстрее будет поле in [....] ?
Вряд ли.


Academic   (2004-01-20 10:50:00) [19]

Оцени скорость работы своей процедуры в стандартном iSQL
InterBase.


Danilka   (2004-01-20 10:49:00) [20]

А зачем в гриде столько записей?
30тыс записей, это примерно 500 листов формата А4, то-есть юзеру чтива не на одну неделю.
Ненадо работать с клиент-сервером также как и с файл-сервером, всегда можно уточнить запрос, чтобы он вернул не тысячи/мильены записей, а 100-200, тем более, что на самом деле из этих 100-200 записей юзеру реально надо не больше 10-и.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо