Да это я уже сделал (и перечитал, и сделал выводы): добавил правильный индекс по этому полю, и теперь всё работает нормально: и массовая вставка и выборка. Кстати, быстрее вставлять с активными индексами, чем их выключать, а после вставки включать, потому что при создании индекса приходится сканировать всю огромную таблицу, а это разрастание дискового кеша, своп, тормоза.
мда. какие-такие тормоза? у меня в тестовой лаборатории Intel по базе в 26 ГИГАБАЙТ по одной большой таблице индекс по int создавался около часа. На IB 5.1, в 1997 году. Соответственно, о каких-таких тормозах может идти речь СЕЙЧАС, даже на такой базе?
"индекс сделал" - это сделал выводы? Скажи пожалуйста, ну какая тебе радость с того, что тебе приходится сканировать всю эту таблицу? Зачем ты это делаешь, если этого можно НЕ ДЕЛАТЬ?
Исходные условия:
FB 1.5.1.4481-Win32
W2k Server, 512 Mb, iP4 2.4 ГГц
Есть большая (27 млн записей, 2.5 гигабайта)
еще раз "мда". у меня на личной машине тоже 512 мег памяти, и валяется биллинговая база в 2.2 гигабайта, по которой я иногда всякие запросы пускаю. Но это, простите, рабочая станция, а не сервер.
В общем, при любой операции, которая затрагивает большое количество записей (статистика за месяц, sweep, gbak), начинается своп, великий и тормозной.
Я лучше явно выделю под кэш БД 200-250 мегабайт, но без системного кеширования. Сдаётся мне, тормоза будут меньше.
Дык своп-то от нехватки физ. памяти идет.
О каком кэше в 200 мб идет речь на всего 512 мег физической памяти, если после загрузки самой Windows доступно в лучшем случае 250 мегабайт? Я вообще удивляюсь, тебе объясняют, что у людей базы по 8 гиг, и они не жалуются на подобное. И объясняют, как избежать проблем с совершенно ненужным полным сканированием базы (запросами по всем данным). И что никаких напрягов с кэшем ни при sweep ни при gbak нет. В общем, я чего-то видать не понимаю....