LeaF_AVF
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору DmitryKz мне кажется, что "бутылочным горлышком" в данной ситуации является не быстродействие сервера БД, а процедура добавления записи (открыть документ, прочесть слово, сделать выборку на наличие такого, добавить или изменить значение поля, подтвердить транзакцию). При таком подходе (без индекса по ключевому полю), время выборки будет становиться все больше и больше с каждым запросом из-за натурального перебора. Поэтому индекс я бы добавил. И второй вариант - может заинтересует, вроде бы интересный: 1. Создаем таблицу table1 (id, name) 2. Добавляем в нее _все_ слова (только не по одной записи за транзакцию, а пакетно - по пару сотен или тысяч) 3. Создаем индекс на поле name 4. Создаем таблицу table2 (id, name, name_qty) 5. Пишем хранимую процедурку, которая: - проходит по всей таблице table1 (вот тут индекс и поработает в полную); - по каждому полю делает выборку вида Код: SELECT COUNT(name) FROM table1 t1 WHERE t1.name = :name into :name_qty; INSERT INTO table2 (name, name_qty) VALUES (:name, :name_qty); DELETE FROM table1 WHERE t1.name = :name; | 6. На выходе - искомая табличка со стастистикой. Вроде бы все |