radteh писал(а):Разве в Delphi есть поддержка динамических массивов или там иначе реализованы виртуальные списки. Надо искать узкие места, 1000 записей за 2 секунды это очень долго. Раз Firebird стал кросплатформенным это только плюс, можно будет замутить версию под *nix без Wine.
Эммм... Все дело в том, какие именно данные запрашиваются из БД. Если это просто "слепок" одной единственной таблицы - так даже без всяких списков можно вывести хоть 50000 записей менее чем за секунду. Другое дело, когда нужно слепить в одно целое данные из 2-таблиц или более, а это как раз наибольшая часть запросов.
Я уже много проэкспериментировал с различными структурами организации хранения данных, способами их выбора из базы. Результат очень простой - или скорость в ущерб функциональности и универсальности, или - функциональность и универсальность в ущерб скорости.
Я выбрал вариант №2. 1000 записей за 2 секунды, это долго, да. Но не в случае, когда они "слепляются" из 6-ти таблиц. В первой версии, где все шло одним "мега-запросом" было еще дольше

...в десятки раз. Пришлось разделить его на несколько более простых и собирать данные уже средствами "движка" программы, который можно еще оптимизировать.