Текущий архив: 2004.07.11;
Скачать: CL | DM;
Вниз
"подвисание" приложения во время выполнения запроса Найти похожие ветки
← →
irish (2004-06-15 21:08) [0]Иногда на выполнение запроса к базе требуется много времени (мин. 20 и больше). Как сделать так, чтобы во время выполнения этого запроса приложение не "подвисало", чтобы пользователь имел доступ к элементам управления формы?
← →
Johnmen © (2004-06-15 21:46) [1]http://delphimaster.net/view/3-1086877190/
← →
sniknik © (2004-06-16 00:32) [2]> мин. 20 и больше
запрос к ленинской библиотеке на содержание 18-го тома? ;о))
чтобы приложене не "подвисало" универсальное средство делать "тормозящее" действие в отдельном потоке. или воспользоватся готовым из какого нибудь поддерживающего компанента. (но смысл все одно - отдельный поток)
← →
Danilka © (2004-06-16 08:07) [3]
> (мин. 20 и больше)
какой кошмар. какие терпеливые юзеры. почему они не покалечили таких разработчиков, предварительно не уволив за саботаж и вредительство?
:))
← →
bushmen © (2004-06-16 11:18) [4]>какие терпеливые юзеры
Они, наверное, до этого на счетах считали по паре месяцев :)
← →
Alexander_K © (2004-06-16 12:06) [5]Danilka © (16.06.04 08:07) [3] bushmen © (16.06.04 11:18) [4]
Да ладно, бывают иногда здоровые базы, и запросы мощьные (связано около 10 таблиц и т.д.), так что и с индексами все равно тормозит.
Правда такие запросы обычно выполняются для какой-нибудь статистики, и довольно редко, но в моей практике встречаются.
А по существу: правильно тебе сказали про потоки. Почитай про TThread, посмотри в примерах, там есть проги с их использованием.
← →
Alexander_K © (2004-06-16 12:09) [6]А вообще, посмотри еще, может тебе где-нибудь в БД индексы построить надо - заметно убыстряет выполнение запросов
← →
Danilka © (2004-06-16 13:29) [7][5] Alexander_K © (16.06.04 12:06)
Чего только не бывает. Но 20 минут - это клиника. Если запросы к базе на 20 минут, значит либо база спроектирована неверно, либо запрос корявый, третьего не дано.
Иногда, лучше добавить избыточности в базу, чем так вешать всех.
По мне, так запрос со временем выполнения на 10 секунд это уже что-то не так и надо выправлять ситуацию, а тут - на два порядка...
← →
Johnmen © (2004-06-16 13:38) [8]>Danilka © (16.06.04 13:29) [7]
Не соглашусь. Т.к., например, сбор сложной статистики может идти долго. При этом может выполняться более 1 запроса.
И это вовсе не значит, что все будут вешаться...
:)
← →
Danilka © (2004-06-16 14:02) [9]Alexander_K ©
Johnmen ©
Ладно, не буду спорить, т.к. со статистикой дела не имел. Просто как-раз сейчас приходится заниматься оптимизацией - когда вьюхи/процедуры писались под одни данные, база выросла за годы во много раз, и запросы которые раньше летали приходится переделывать. И уменьшить время выполнения запроса с минут, на секунды, как правило, всегда удается.
← →
irish (2004-06-16 14:55) [10]Ладно, ладно, шутники. Все поля не проиндексируешь, а сканирование одной таблицы по неиндексированному полю - 2,5 мин.
А за идею TThread спасибо!
← →
Danilka © (2004-06-16 14:59) [11][10] irish (16.06.04 14:55)
> Все поля не проиндексируешь
Почему? :))
По крайней мере те, по которым будет сортировка/фильтрация - запросто.
← →
irish (2004-06-16 15:11) [12]Похоже, не все так просто. "Часики" все равно висят. И приоритет роли не играет...
← →
irish (2004-06-16 15:19) [13]>Danilka ©
Информация накапливающегося характера
И что лучше: разместить больше информации или проиндексировать все поля? (а поиск может проводится по всем) :))
Страницы: 1 вся ветка
Текущий архив: 2004.07.11;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.032 c