2017-09-10 3 views
1

私はlaravelを使用しています。私はテーブルの最後の行を取得する必要があります。私は以下のコードを使用していますが、明らかにテーブル全体を取得してから最後の要素にループしています。テーブルが巨大であれば、これは問題になるでしょう。Mysql - Laravel:すべてのデータをフェッチせずにテーブルの最後の行を取得する

$result = Table::orderBy('created_at', 'desc')->first(); 

最後の行を取得する方が効率的です(EloquentまたはSQLクエリ)。

おかげ

+0

すべてがループしますか? 'first()'は、あなたが1つの要素だけを必要としていることを知っているので、1の制限でクエリを作成します。 – mimo

答えて

2

あなたの現在のLaravelクエリは、データベースの最新の行を見つけるための一つの方法です。それは、次の生のMySQLのクエリに対応@vladatrで述べたように:あなたの質問に答えるために

SELECT * FROM yourTable ORDER BY created_at DESC LIMIT 1 

、MySQLのレベルでこのクエリをスピードアップするための1つの方法はcreated_at列にインデックスを追加することです。この索引は、オプティマイザによって使用される場合は、最新のレコードを見つけるために必要なソート操作を高速化する必要があります。

関連する問題