This will output the raw SQL that is sent to the DB server from Eloquent.
Run that raw SQL statement directly against the mySQL database, but prepend EXPLAIN. This will give you an idea of the indexing that is used for the query.
I am betting that you are missing some kind of index in the database, probably on the datetime field.
You can also use Laravel Debugbar, which is immensely useful. It will show you the queries run on each page (along with the explain) and much more. It just runs behind the scenes and creates a bar at the bottom of the webpage, much like browser dev tools do.
@gstoa Laravel Debugbar is particularly useful because it lists the individual SQL query response times. This is extremely valuable when you have a page that has many different DB queries, and therefore you can focus on the exact queries that are taking longer than optimal.
$table->index('user_id'); // Example migration code
Add the indexes and test again to see if there's a performance difference. My load time dropped by over 50%, when I added indexes to the related tables that were being used for the withCount.