Не навешай ярлыка на инструмент твой.
Задача. Сделать браузер/редактор для двух таблиц, связанных отношением master/detail. Инструменты: Delphi 5, Interbase Firebird 0.9.4.
Легко. Но мы же типа учёные, мы не будем вешать две TTable, как на втором курсе с Paradox’ом. Сделаем как белые люди, TQuery, TUpdateSQL, cached updates, все дела.
Угу, сделали. Фигачим в таблицу миллион записей. Давим Ctrl+End… Пц. BDE начинает засасывать весь миллион в память. Task Manager показывает линейный рост занятой памяти… кривая доходит до потолка… всё грохается.
Отлично. Меняем BDE на Interbase Express. Давим Ctrl+End. То же самое.
Плюём на принципы, выкашиваем Query и UpdateSQL, вешаем два TTable. Ctrl+End. В SQL Monitor’е видим красивый запрос SELECT * FROM table2 WHERE условия ORDER BY поле1 DESC, поле2 DESC. Типа, сейчас всё на сервере отсортируем по убыванию, стащим 10 первых записей, покажем в grid’е. Вот только в %temp%’е рождается и начинает дико расти файл с говорящим именем ib_sort_####…
CREATE DESCENDING INDEX имя ON table2 (поле1, поле2);
Запускаем. Ctrl+End. Отрабатывает влёт! Пробуем добавить запись. Минута молчания… запись добавлена. Всё работает.