は、私は次のようにmyEntity
と呼ばれるテーブルを持っている:集合関数にはGROUP BYが必要ですか?
- id (PK INT NOT NULL)
- account_id (FK INT NOT NULL)
- key (INT NOT NULL. UNIQUE for given account_id)
- name (VARCHAR NOT NULL. UNIQUE FOR given account_id)
私は、ユーザーに主キーid
を公開したくない、そしてこの目的のためにkey
を追加しました。 key
種類は、アプリケーションによって手動で処理する必要があるaccounts_id
の自動インクリメント列として機能します。最初にプライマリキーコンポジットを作成することを計画していましたが、テーブルは他のテーブルに結合されていましたが、それを知る前にテーブルに4つのカラムがありました。 account_id-name
はaccount_id-key
と同じですが、クライアントが複数のレコードを要求した場合は、ネットワークトラフィックが最小限に抑えられ、key
が小さくなります。はい、私はそれが適切に正規化されていないことを知っていますが、私の直接の質問ではありませんが、建設的な批評のコメントを感謝します。
ごめんなさい...集計関数にGROUP BYが必要なのはいつですか?例えば、次はどうですか? https://stackoverflow.com/a/1547128/1032531には表示されません。それは必要ですか?
SELECT COALESCE(MAX(key),0)+1 FROM myEntity WHERE accounts_id=123;
ありがとうございます。良い説明。複合インデックスを追加します。トピックをオフにしますが、複合キーを頻繁に使用しますか?余分な列を増やすことについて私が何を意味していたのか知っていますか?たぶん大したことではないでしょう。 – user1032531
複合インデックスは特定の目的に役立ちます。ディスカッションについては、http://use-the-index-luke.com/をお読みください。 –