Weźmy pierwszy występ w Ruby on Rails

To jest pytanie dotyczące metod zapytań ActiveRecord:

first Znajdź pierwszy rekord (lub pierwsze N ​​rekordów, jeśli podano parametr). Jeśli nie zostanie zdefiniowane żadne zamówienie, zostanie zamówione według klucza podstawowego.take Daje rekord (lub N rekordów, jeśli parametr jest podany) bez dorozumianego porządku. Zamówienie będzie zależało od implementacji bazy danych. Jeśli zamówienie zostanie dostarczone, będzie przestrzegane.

usecase: pobiera rekord z bazy danych na podstawie unikalnego atrybutu, na przykład.

User.where(email: '[email protected]')

tutaj,first generuje

SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' ORDER BY "users"."id"` ASC LIMIT 1

take generuje

SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1

tak jak widać powyżejfirst dodaje dodatkową klauzulę zamówienia. Zastanawiam się, czy jest różnica między wydajnościątake vsfirst.

Jesttake szybszy niżfirst lub odwrotnie?

questionAnswers(1)

yourAnswerToTheQuestion