проблемы с массовой вставкой и «массовой проверкой» в Rails - PullRequest
1 голос
/ 22 июня 2010

Я использую функцию импорта ar-extensions для массового импорта, и это быстро, но не так быстро, как хотелось бы. Две проблемы, которые я вижу из журналов:

  1. Я все еще вижу отдельные операторы вставки SQL - почему не выполняется многострочная вставка?

  2. У меня есть: validates_uniqueness_of, и я вижу, что он делает SELECT для каждой строки, чтобы сделать это. Есть ли способ «массовой проверки», в котором он мог бы просто выбрать все с помощью предложения WHERE и вместо этого проверить уникальность?

Я не решаюсь перейти на SQL для этого, поэтому есть предложения - или использовать другой гем / плагин? Спасибо!

Ответы [ 2 ]

1 голос
/ 22 июня 2010

Я использую instance_attribute (@bulk_loading) в моей модели, когда я делаю массовые вставки. Если переменная имеет значение true, некоторые проверки не выполняются.

Как говорит egarcia, в настоящее время AR не поддерживает многострочные вставки.

validate_uniqueness_of проверки ускорений

1) создайте уникальный индекс в БД для выполнения проверки и НЕ используйте AR для проверки. - Просто поймайте соответствующую ошибку из драйвера dbms, когда вставка не удалась из-за нарушения уникального индекса

2) создайте неуникальный индекс в базе данных для уникальности и проверьте (используя методы анализа запросов базы данных), что индекс используется и проверка уникальности sql выполняется максимально быстро.

1 голос
/ 22 июня 2010

Я использую FasterCSV в паре проектов, и это кажется достаточно быстрым. Тем не менее, он не делает "многорядные вставки". Я не думаю, что ActiveRecord может это сделать, особенно если речь идет о проверках.

Использование встроенного механизма импорта вашей БД всегда будет быстрее, но вы потеряете некоторые достоинства AR - в основном проверки и фильтры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...