はい、パフォーマンスとスケーラビリティの両方の点で欠点があります。
これらのORMとARはすべて、基本的なクエリでのみ非常に優れています。
しかし、いくつかの複雑な問題になると、それらは耐え難い複雑になるか、単に無力になります。
これらの洗練された演算子に「USEINDEX」や「DELAYED」などのパフォーマンスを向上させるコマンドを挿入する方法はありません。
スケーラビリティについても同じことが言えます。
非標準の演算子を使用するたびに、頭をかきむしります。
移植性の問題もあります。
SQLはウェブデウェロパーのための共通語であり、誰もがそれを読み書きすることができます。プロプライエタリORMはそれらを修正することができますが。
それにもかかわらず、2番目のコードは醜くて使用できません。
$user = DB::connection()->pdo->prepare("SELECT * from users where email=?");
DB::connection()->pdo->prepare()
ユーザーを返しません。実際のユーザー情報を取得するために次の数行で使用する必要があるステートメントハンドルを返します。
スクリプトに大量の役に立たないコードを追加します。
そして、それはスカラーから選択する通常のケースです。INSERT
または単なるステートメントで試してみるIN()
と、コードが数画面の高さまで爆破されます。
本当にユーザー情報を取得するためにそれを作らないのはなぜですか?
$user = DB::conn()->getRow("SELECT * from users where email=?s",$email);
見てください-あなたはあなたのSQLをまだ使用可能にしています。