0

ほとんどの列 (ユーザー プロファイル) はたまにしか必要としない大きな「ユーザー」テーブルがありますが、いくつかの列 (ユーザー資格情報) は非常に頻繁に必要です。ユーザーの名前を表示するためだけに、プロファイルを含む行全体をフェッチするのは好きではありません。

テーブルを2つに分割します。ユーザーとプロファイルのパフォーマンスが向上するか、または低下するか (プロファイルに対して 2 つのクエリを実行する必要がある)? MySql では、数列しかない行をフェッチする場合と、100 と言う場合とでパフォーマンスに違いはありますか?

ありがとうございました。

私は Laravel フレームワークを使用していることに言及する必要がありました。列を選択するには、生のクエリを使用する必要があります。私はその考えが好きではありませんが、私はそれを調べます。

4

3 に答える 3

1

SQL の開発には古いイディオムがあり、実際に を実行しているときは、テーブルからすべてSELECT *を取得する必要はありません。

クエリを高速化し、パフォーマンスを向上させるためにできることがいくつかあります。

1) SQL ステートメントで必要なフィールドのみを選択します。次に例を示します。

SELECT `username`, `password`, `email` FROM `users` WHERE `id` = 1

2) 頻繁に使用されるクエリを最適化できるように、テーブルにインデックスを追加します。たとえば、ユーザーの電子メール アドレスを定期的に検索している場合は、email列にインデックスを追加することを検討できます。

MySQL Partitioningも調べたいと思うかもしれませんが、それは本当に必要なものではないと思います。MySQL は、何百万ものレコードを保持するデータベースとして設計されました。

また、データベースを設計するときは、少なくとも最初の 3 つの正規形正規化を実行することが重要であることにも注意してください。これにより、データの整合性が保証され、プロジェクトの DB 構造も最適化されます。

于 2013-10-27T10:46:59.157 に答える
0

この記事を読むと、多くのことが説明されています。 http://bi-bigdata.com/2012/09/02/select-vs-select-in-sql-server-query/

于 2013-10-27T10:49:02.943 に答える