![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ibase тормоза [D5, IB6.x]
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-и.