Здравствуйте, Elifant, Вы писали:
E>Здравствуйте, 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>>И все. Пополняешь табличку в триггере.
E>Такой вариант рассматривался, но смущает многократное хранение кусков имени файла.
E>SELECT AVG(LENGTH(name)) FROM files
E>Средняя длина имени файла: 14.0829
E>Для каждого файла будет 14 записей, их общая длина = 1 + 2 + ... + 14 = 15 * 14 / 2 = 105
E>+ на поля номера файла и позиции.
E>Получаем дополнительно 105 / 14 = почти 8тикратное увеличение объема + ещё довольно много на индекс.
E>Пока база занимает 100 метров (и это только для четверти всей сети) и в принципе влазит в оперативку. Вот с гигабайтной базой уже хуже...
E>Но, как я понимаю, это единственный вариант, который не требует больших затрат труда, а лишь денег на винт и память... Пойду все-таки попробую сделать так.
E>В любом случае спасибо.... << RSDN@Home 1.1.2 beta 2 >>