Я использую Laravel 5.6 и MySQL для БД
public function getTopPaid(){
$books = Book::with('users')->where('price', '>', 0 )->get()
->sortByDesc(function ($book){
return $book->users->count();//sorting by purchased users count
})->take(25);
return new BooksWithAuthors($books);
}
Я хочу получить самые покупные платные книги с кодом выше. И это нормально, и время отклика составляет 1700 миллисекунд. И около 400 записей.
Однако приведенный ниже код почти такой же:
public function getTopFree(){
$books = Book::with('users')->where('price', '=', 0 )->get()
->sortByDesc(function ($book){
return $book->users->count();
})->take(25);
return new BooksWithAuthors($books);
}
только 34 записи в результате, но RESPONSE находится в 8000 миллисекунд. И единственное отличие в коде
"равно"
where('price', '>', 0 )
и
where('price', '=', 0 )
Почему второй запрос такой медленный? И как это исправить