Индексирование замедляется при вводе записей, потому что требуется добавить запись в индекс, и для этого нужны некоторые ресурсы, но после добавления они ускоряют ваши запросы на выборку, как вы сказали НО может быть b-деревоэто не правильный выбор для вас!Потому что B-Tree индексирует первые X единиц индексированного предмета.Это замечательно, когда у вас есть целые числа, но текстовый поиск сложно.Когда вы выполняете запросы, такие как
Model.where("name LIKE ?", "#{params[:name]}%")
, это ускоряет выбор, но когда вы используете такие запросы:
Model.where("name LIKE ?", "%#{params[:name]}%")
, это не поможет вам, потому что вы должны искать всю строку, которая можетбыть длиннее, чем несколько сотен символов, и это не является улучшением, если индексировать первые 8 единиц строки длиной 250 символов!Так что это одна вещь.Но есть другое ....
Вы должны добавить УНИКАЛЬНЫЙ ИНДЕКС, потому что база данных лучше в поиске дубликатов, чем рубин!Он оптимизирован для сортировки и определенно является более коротким и чистым способом решения этой проблемы!Конечно, вы должны также добавить валидацию к соответствующей модели, но это не повод, чтобы все связывалось с базой данных.
// о скорости индекса
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html
У вас нет большого набора опций.Я не думаю, что потеря скорости вставки будет такой большой, когда вам нужен только один индекс!Но выбранная скорость увеличит пропозицию все!