2016-07-26 6 views
2

私はLaravel Frameworkを使用しています。毎日新しいレコードが追加される何千ものレコードがあります。私が達成したいのは、最近挿入されたデータから古いものへの検索キーワードです(これは、最後に挿入されたIDと最後に挿入されたIDの最初の検索などを意味します)。これは奇妙なものかもしれませんが、私はこれが必要です。これの主な目的は、私の検索をより速くすることです。私は一致した複数のキーワード(約5/6列)を検索する必要があります。私の知るところによれば、これらの検索列をすべて索引付けすることも選択肢です。よりよい解決策があれば、私は応募したい。私が試した投稿コードは素晴らしいだろうが、私は何もしようとしていない。mysql検索の逆順

これは単に任意の助けをいただければ幸いです

$checkDuplicate = \Guest::where('uuid', $uuid) 
          ->where('first_name', 'abc') 
          ->where('middle_name', 'def') 
          ->where('last_name', 'ghi') 
          ->where('age', '50') 
          ->where('hotel_name', 'mno') 
          ->where('check_in', 'xxx') 
          ->where('check_out', 'yyy') 
          ->first(); 

テーブルの先頭から検索します。ありがとうございました

答えて

0

idの列を更新する必要がある場合は、次のように降順で並べ替えることができます。->orderBy('id', 'desc')フェッチするレコードの制限を設定することもできます。

More info here in Laravel Docs

+0

@Alilshaq、ドキュメントによると: '' orderByメソッドでは、クエリの結果を特定の列 ''でソートすることができます。私は検索する必要がありますが、結果を並べ替える必要はありません。 :) – vijayrana

+0

すでにすべての検索列が 'where'として追加されています。 IDを降順で並べ替えると、結果の中に挿入された最新のレコードが最初に取得されます。 – AliIshaq

0

私には、それに対して実行する必要があるクエリのデータ構造を最適化する必要があるようです。ホテルの名前の列があり、データの列挙が必要です。あらかじめ選択された範囲のホテルがありますか?たとえば、検索するときに、varchar(はるかに高速です)ではなく、外部キー(テーブルのid)に対してドロップダウンリストとクエリでホテルを選択することは妥当でしょうか?

再設計がオプションでない場合は、自分で述べたように、インデックスを追加する方がよいでしょう。しかし、あまりにも多くの指標が悪い習慣であることに留意してください。私はあなたが特定の戦略(例えば、最新のものから始まる)でデータをクエリするようにMySQLを強制することができるとは思わない。

もう1つの問題は、MySQLを最新のものに最初に照会するようにしても、それ以上の結果がないと結論づけるために残りのデータセットを検索したいと思うことです。限度額)。

+0

ありがとう、私はそれからいくつかのアイデアを持っていると思う – vijayrana