에 루비에서 첫 공연 대 걸릴 : (매개 변수가 제공되는 경우 또는 첫 번째 N 레코드)이는 액티브 쿼리 방법에 관한 질문입니다 레일
first
가 첫 번째 레코드를 찾습니다. 주문이 정의되지 않으면 기본 키로 주문합니다.take
묵시적 순서없이 레코드 (또는 매개 변수가 제공된 경우 N 레코드)를 제공합니다. 순서는 데이터베이스 구현에 따라 다릅니다. 주문이 제공되면이를 존중할 것입니다.
usecase : 고유 한 속성을 기반으로 데이터베이스에서 레코드를 검색합니다. 여기
User.where(email: '[email protected]')
,
first
는
SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' ORDER BY "users"."id"` ASC LIMIT 1
take
이
SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1
그래서 first
위에서와 같이 추가 주문 절을 추가
take
대
first
사이의 성능 차이가 있는지 궁금합니다.
take
은 first
보다 빠르거나 그 반대입니까?
주문이 필요합니까? – apneadiving
아니요, 성능에 대해 더 신경이 쓰였습니다. 그러나 둘 다 성능이 동일하다면, 나는 기억하기 쉽기 때문에 주문이 필요한 곳이나 없을 수도있는 곳 어디에서나 .first를 사용할 것입니다. 그 이유는이 질문 – CuriousMind
Take는 order 절을 포함하고 있지 않기 때문에 더 빠를 것입니다. 그러나 그 차이는 무시할 수 있다고 가정합니다. 찾아내는 한 가지 방법은 벤치 마크입니다. –