Здравствуйте, Sinclair, Вы писали:
E>>Что-то я не пойму... Т.е. Вы предлагаете использовать все ту же базу данных, но приделать к ней свой способ индексирования? А как?
S>Очень просто. Заведешь еще одну табличку, в которой для каждого файла будет length(name) записей:
S>(FileID, StartPos, TruncatedName).
S>По truncatedName сделаешь индекс.
S>Тогда поиск будет таким:
S>S>select FileID, StartPos from indexTbl where TruncatedName like 'searchstr%'
S>
S>И все. Пополняешь табличку в триггере.
Такой вариант рассматривался, но смущает многократное хранение кусков имени файла.
SELECT AVG(LENGTH(name)) FROM files
Средняя длина имени файла: 14.0829
Для каждого файла будет 14 записей, их общая длина = 1 + 2 + ... + 14 = 15 * 14 / 2 = 105
+ на поля номера файла и позиции.
Получаем дополнительно 105 / 14 = почти 8тикратное увеличение объема + ещё довольно много на индекс.
Пока база занимает 100 метров (и это только для четверти всей сети) и в принципе влазит в оперативку. Вот с гигабайтной базой уже хуже...
Но, как я понимаю, это единственный вариант, который не требует больших затрат труда, а лишь денег на винт и память... Пойду все-таки попробую сделать так.
В любом случае спасибо.