別のテーブルの行をグループ化する目的で、単一の列を持つテーブルを使用するのは一般的なケースですか?グループ分けのテーブル
データをバッチで挿入していますが、生成されたIDに基づいてデータをグループ化できるようにするために、それぞれのバッチに対して自動インクリメントキーが必要です。
は、具体的には、私はそう基本的にB(非正規化)にタイムスタンプを移動し、唯一のグループ化のための外部キーを使用し
A
id, x, y, timestamp, b_id
id PRIMARY KEY
b_id FOREIGN KEY REFERENCES B.id
B
id
id PRIMARY KEY
SELECT count(*) as number, A.timestamp FROM A
where A.x='value' and A.y='value'
group by A.b_id, A.timestamp;
にこの
A
id, x, y, b_id
id PRIMARY KEY
b_id FOREIGN KEY REFERENCES B.id
B
id, timestamp
id PRIMARY KEY
SELECT count(*) as number, B.timestamp FROM A inner join B on A.b_id=B.id
where A.x='value' and A.y='value'
group by B.id;
から取得したいです。私は、Bに配置されたタイムスタンプに対してのみ参加することを避けたいと考えています。テーブルはかなり大きく(60M行)、参加は非常に遅いです。私がまだAをフィルタリングし、グループ化のためにのみ外部キーを持っていれば、それは多くのことをスピードアップします。
具体的には、MySQLを使用しています。
テーブルの構造とサンプルデータによって、質問がより明確になる場合があります。また、どのようなSQLのフレーバーを使用しています。このようにグループに含まれていない列を選択項目に含めれば、通常は許可されません。 –
@TomH私の答えを編集しました。あなたはそれを確認できますか? – Marko