web-dev-qa-db-ja.com

中括弧を使用しないテーブル名

私はDrupal6のプロジェクトで作業しています。テーブルのプレフィックスが必要ないため、パフォーマンスが向上すると思われるため、クエリのテーブル名から中かっこをすべて削除しています。

テーブルの接頭辞が必要ない場合でも、この推論は正しいか中括弧を使用する必要がありますか?

2
rfc1484

システムの保守性と移植性のためだけに、中括弧は常にそこに保持する必要があります。 Drupalの次のリリースでこれらの中かっこが必要な場合はどうなりますか?私はそれを言っているわけではありませんが、フレームワークがガイドラインを提供する場合、それは理由によりそうなります。おそらくそれらに従う必要があります。

パフォーマンスの利点については、ごくわずかであることがわかると思います。 db_query() は、最初のインスタンスで文字列に中括弧が含まれているかどうかに関係なく、このステートメントを実行します。

_$query = db_prefix_tables($query);
_

したがって、 db_prefix_tables() は、テーブル名に実際にプレフィックスが必要かどうかに関係なく、文字列に対して実行されます。

db_prefix_tables()をステップ実行し、それを使用して、パフォーマンス上の理由からブラケットを削除する必要があるかどうかを判断することをお勧めします。おそらく、すべての文字列置換作業を行う下位レベルの strtr() 関数のパフォーマンスに基づいて決定することになります。

続行するにはグローバル変数が空でないことに依存する関数にその条件があります...データベーステーブルのプレフィックスを「オフ」にして(固有のパフォーマンス損失を制限する)場合は、グローバル変数(_$db_prefix_)は空ですクエリを実行するとおそらくトリックを実行します(ただし、データが競合状態になりやすくなる可能性があります。設定によって異なります) )。

ただし、サイト全体で_$db_prefix_を永続的にオフにしないでください。そうしないと、すべてのコアモジュールとコントリビュートモジュールを調べて、クエリから中かっこも削除する必要があります。

2
Clive