2010-06-21 2 views
1

대량 가져 오기 기능을 사용하기 위해 ar-extensions 가져 오기 기능을 사용하고 있습니다. 빠르지 만 빠르지는 않습니다. 로그에서 볼 수있는 두 가지 문제 :대량 삽입 및 "대량 유효성 검사"문제가 있습니다.

  1. 여전히 개별 SQL 삽입 문을 볼 수 있습니다. 왜 다중 행 삽입을 수행하지 않습니까?

  2. 나는 validates_uniqueness_of를 가지고 있으며 모든 행에 대해 SELECT를 수행하는 것으로 나타났습니다. "일괄 유효성 검사"방식으로 WHERE 절을 사용하여 모든 항목을 선택하고 대신 고유성을 검증 할 수 있습니까?

나는이 일을하기 위해 SQL에 드롭하는 것을 주저합니다. 그래서 어떤 제안이나 다른 보석/플러그인을 사용합니까? 감사!

답변

1

대량 삽입을 할 때 내 모델에서 instance_attribute (@bulk_loading)를 사용합니다. 변수가 true이면 일부 유효성 검사가 실행되지 않습니다.

egarcia에 따르면 현재 AR은 다중 행 삽입을 지원하지 않습니다.

validate_uniqueness_of 검증

1) 검사를 할 수있는 DBMS의 고유 인덱스를 작성하고 확인을 위해 AR을 사용하지 않는 속도 향상. - 고유 색인을 위반하여 삽입이 실패 할 때 dbms 드라이버에서 적절한 오류를 catch하십시오.

2) uniqueness_validation에 대해 db에 고유하지 않은 색인을 작성하고 (db 조회 분석 기술을 사용하여) 인덱스가 사용되고 SQL 고유성 검사가 가능한 한 빨리 실행됩니다.

+0

감사합니다. Larry - 나는 유일한 색인을 사용하는 것을 생각하지 않았습니다. – ambertch

1

몇 가지 프로젝트에서 FasterCSV을 사용하며 충분히 빠릅니다. 그러나 "다중 행 삽입"을 수행하지 않습니다. ActiveRecord가 그렇게 할 수 있다고 생각하지 않습니다. 특히 유효성 검사가 관련되어 있습니다.

DB의 기본 가져 오기 메커니즘을 사용하면 항상 빠를 것이지만 대부분 AR의 장점 인 유효성 검사 및 필터가 손실됩니다.