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?