[解決済み] Laravel Eloquent vs query builder - なぜeloquentを使うとパフォーマンスが落ちるのか [終了しました]
質問
Laravelのクエリビルダとeloquentのパフォーマンステストをしてみました。クエリビルダーの方が、様々なSQL文(select-update-delete-insert)で高速に動作しました。
だから私の質問は:なぜ誰かがプレーンクエリビルダに対してLaravelのEloquentを使用していますか?
どのように解決するには?
EloquentはLaravelのActive Recordパターンの実装であり、その長所と短所をすべて備えています。
アクティブレコードは、CRUD方式で単一のエンティティを処理するのに適したソリューションです。つまり、プロパティを埋めて新しいエンティティを作成し、それをデータベースに保存したり、データベースからレコードをロードしたり、削除したりすることができます。
ダーティチェック(変更されたフィールドのみSQL UPDATEを送信する)、モデルイベント(例えば、誰かが新しいアカウントを作成したときに管理アラートを送信したり統計カウンターを更新する)、特性(タイムスタンプ、ソフト削除、カスタム特性)、イージー/レイジーロードなどのEloquentの機能から多くの利益を得ることができます。また、ドメイン駆動型パターンを適用し、Active Recordエンティティにビジネスロジックの一部を実装することもできます。例えば、検証、リレーションの管理、計算などです。
しかし、すでにご存知のように、Active Recordはいくつかのパフォーマンス上の代償を伴います。
単一のレコードまたは少数のレコードを処理する場合は、何も心配することはありません。しかし、たくさんのレコードを読み込む場合(データグリッド、レポート、バッチ処理など)には、プレーンなLaravelの
DB
メソッドはより良いアプローチです。
私たちのLaravelベースのアプリケーションでは、私たちが適切と考える両方のアプローチを使用しています。UIフォームにはLaravelのEloquentを使用し、1つのレコードを処理するために
DB
メソッド(データベースエンジン特有のパフォーマンスを調整したSQLビューに支えられた)を使用して、UIテーブルやエクスポートタスクなどのデータを取得します。また、RESTful APIでもうまく機能します。EloquentでGET、PUT、POST、DELETEにキーと
DB
キーなしのGETにはEloquentを、フィルタやソート、ページングには
関連
-
MySql認証ベースのvsftpd仮想ユーザー
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] クエリビルダーのSQLクエリを文字列として出力するにはどうすればよいですか?
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】SQL ServerにおけるINNER JOINとLEFT JOINのパフォーマンス比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL基本クエリステートメント
-
SpringBootのMySQLへの接続は、バックエンドのインターフェイスの操作方法を書き込むためのデータを取得するために
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
[解決済み】MySQLで「すべての派生テーブルは独自のエイリアスを持つ必要があります」というエラーは何ですか?
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新