Форум: "Базы";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизБыстрый способ заполнения массива данными из Query Найти похожие ветки
← →
Fedia © (2004-10-19 10:50) [40]Nikolay M. © (19.10.04 10:37) [34]
Да я понимаю, что " В Москве" не сильный аргумент, но БД получилась вполне адекватной большинству решаемых задач (это далеко не только мое мнение). Может быть разрабатывали ее и студенты, но принимали ее и корректировали уже специалисты.
ЮЮ © (19.10.04 10:41) [36]
организуйте цикл по любому массиву, длиной 778112, не делая ничего внутри цикла и сравните с 0.3 секундами.
Всем до завтра.
← →
Sergey13 © (2004-10-19 10:54) [41]2Fedia ©
Если ты не можешь влиять на структуру БД, то может стОит подумать о переносе логики на сервер? Тут 2 варианта.
1. Попробовать трехзвенку. На сервере приложений (стоящем вместе с БД) крутить такие затратные алгоритмы, а клиенту отдавать только результаты.
2. Хранимые процедуры - говорят они то-ли уже есть, то-ли вот-вот появятся в MySQL.
ЗЫ: Говорить что квери фигня и не знать, что такое есть фетчинг - признак нехороший.
← →
Anatoly Podgoretsky © (2004-10-19 10:56) [42]Fedia © (19.10.04 08:40) [12]
(уже не могу это писать без смеха :))
Не отчаивайся ты не один
← →
DenK_vrtz © (2004-10-19 11:00) [43]Столько хорошего и дельного было сказано автору ветки...
Но мы ж настырные и не ищем легких(правильных) путей!
"Чего тут думать, трясти надо!"
← →
Anatoly Podgoretsky © (2004-10-19 11:02) [44]ЮЮ © (19.10.04 10:28) [30]
Нельзя, массив то все равно надо заполнить, так что и .Next оставить и заполнение массива.
← →
Ильш (2004-10-19 11:09) [45]на форум sql.ru сходжи там задай свой вопрос
ато здесь уже не обсуждение, а кидание кочерыжками.. :(
← →
Deniz © (2004-10-19 13:11) [46]Ответы сыпются аж страшно становится ;-)
Вопрос к автору:
Если такой серьезный проект почему MySQL?
Какие компоненты доступа к MySQL?
Как проводилось сравнение массивов и "Query" (не знаю как эту кверю теперь называть)?
Если результат в EXCEL, то массивами действительно быстрее, но попробуй подцепить какой-нибудь DBGrid к "Query" просто для просмотра.
← →
Deniz © (2004-10-19 13:27) [47]>Fedia © (19.10.04 10:11) [26]
>>Ты для каждой из 100 000(!) записей делаешь кучу кривых запросов
>Если внимательно прочитать предыдущие постинги, то уже два года, как не делаю
Т.е. если я правильно считаю, то получается с ~октября 2002 года программа перешла на массивы? Сколько до этого работала на Query? Именно на каких компонентах?
Если верить Вашей анкете, то Вам тогда был 21 год. И уже такой опыт?
← →
Deniz © (2004-10-19 13:28) [48]Удалено модератором
← →
Deniz © (2004-10-19 13:29) [49]Удалено модератором
← →
KORSAR © (2004-10-19 15:40) [50]А может из Query1 можно получить указатель гле храняться выбранные данный и подложить их по указателю массву!
← →
ЮЮ © (2004-10-20 03:13) [51]>Anatoly Podgoretsky © (19.10.04 11:02) [44]
>Нельзя, массив то все равно надо заполнить, так что и .Next оставить и заполнение массива.
Цикл там организован по длине массива. Как следует из [33], закачка данных на клиента составляет лишь 1/26 времени заполнения массива, поэтому основная потеря при заполнении массива или при доступу к полям DataSeta.
Кстати, уже замена Query1.fieldByName("id_ves").AsInteger на
Query1.fiels[1].AsIntrger (и, соответственно, для других полей) приведет к значительному ускорению
← →
Fedia © (2004-10-20 04:27) [52]Всем доброго времени суток.
ЮЮ © (20.10.04 03:13) [51]
>закачка данных на клиента составляет лишь 1/26 времени заполнения массива
Закачка данных на клиента происходит по мере выполнения Query.Open, не так ли? Это простой перебор данных из Query занимает 1/26 времени заполнения массива (что уже не мало). Простой перебор данных из массива происходит значительно быстрей (см. [40]).
Подробнее о решаемой с использованием массивов задаче позже.
← →
ЮЮ © (2004-10-20 04:36) [53]>Закачка данных на клиента происходит по мере выполнения Query.Open
По Query.Open выполняется запрос на сервере, а количество переданных на клиент записей определяется настройками и потребностью клиента в этих записях.
Пробежав по всему датаsety мы гараниарованно передали на клиент все записи с сервера
← →
Johnmen © (2004-10-20 09:13) [54]>Fedia ©
НД в памяти вполне можно рассмотривать, как массив. И работа с ним ничуть не медленнее, чем с массивом (в той же памяти).
← →
Fedia © (2004-10-20 11:07) [55]День сегодня был тяжелый, а разговор, судя по всему, предстоит серьезный, и вести его лучше на свежую голову. Так что прошу у всех участников ветки прощения за то, что не отвечал и переношу обоснование использование массивов на завтра (если будет свободное время).
Johnmen © (20.10.04 09:13) [54]
>НД в памяти вполне можно рассмотривать, как массив.
Если НД - это набор данных Query, то это радует :)
← →
msguns © (2004-10-20 12:43) [56]Согласен с Nikolay M. © и ЮЮ ©.
Шось пробз...ло в Датском короливсьтве.. В смысле кривость именно в концептуальной плоскости, а не алгоритмике.
Но, принимая во внимание
а) древность разработки
б) чужесть разработки
в) высокую степень "оригинальности" поставленных текущих задач в смысле их вопиющей выпадаемости из бизнес-логики модели БД
можно предложить следующие соображения:
Исх.данные:
- Есть БД с весьма большим кол-вом записей
- Есть необходимость анализа цепочек (блоков) данных, связанных неявным (не заложенным в бизнес-логике) способом
- Большое кол-во "проходов" по ВСЕМУ массиву информации для установления полной картины рез.данных.
Задача:
- Оптимизировать алгоритмически процесс формирования вых.результатов по времени, максимально перенеся нагрузку на клиента.
Методы решения:
а. Концептуальный (ревизия бизнес-логики с весьма вероятным пере (до) проектированием структуры БД. ОТПАДАЕТ
б. Алгоритмический. Попробовать максимально использовать преимущества "ручного" управления (собственными "тонкими" методами) перед стандартными (работа компонент через буферы ОЗУ)
в. Смешанный. Создаем пустую временную БД на клиенте со структурой и логикой данных, максимально приближенной к решению поставленной задачи (делаем мин.кол-во таблиц с ключами/индексами, прямо участвующими в схемах лог.связей). Определяем для этой БД доп.логику, ускоряющую процесс выборки (индексы, ХП и т.д.) Заливаем в эту БД данные из "Общака" и запускаем собственно приложение.
Какой именно путь избрать - решать Федор, тебе. Пока ты идешь вторым. А лучшим ли ?
А вот подсказать уже по конкретике, представляя задачу и метод ее решения в целом - это уже дело Мастеров, а их в этой ветке уже немало нарисовалось.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.039 c