MySQL でマルチセット (「バッグ」) を実装する標準的な方法を探しています。このマルチセットに含まれる値は文字列のみです。
その背後にある理由はカウントです。事前に定義できないイベントのリストがあり、それらの発生をカウントしたいと考えています。たとえば、Python では、これはCounterを介して実行できます。
以前、MySQL のセットについて質問したことがあります。私がこれまでに見つけた最善の解決策は、TEXT
データ型を使用してコンマ区切りの文字列をデータベースに入れ、次に を使用FIND_IN_SET
して要素がセット内にあるかどうかを確認することです。ただし、このソリューションはマルチセットには適していません。たとえば、文字列をテキスト フィールドに 1000 回格納してからカウントするのは効率的ではありません...
使用例は次のとおりです。特定の行に関連する (Python) スクリプトの実行中にイベントが発生するたびに、データベースにアクセスし、そのイベントをデータベース内のこれらの各行に追加したいと考えています。最後に、各行の各イベントの発生回数を数えたいと思います。データの挿入が効率的であることが私にとってより重要です(最終的な計算と比較して)。
編集
私の元のデータテーブルには何千もの行が含まれており、それぞれに「マルチセットフィールド」が必要です(何らかの方法で)。そのような各マルチセットにはあまり多くの (たとえば 20 未満の) 区別された値が含まれている可能性がありますが、そのような各値はマルチセット内で何度も (たとえば 500 回を超えて) 出現する可能性があります。したがって、後でカウントされるのを待っている各値の文字列 (またはその他の表現) は、(私の理解では) 非効率的である可能性があります。たとえば、任意の (元の) 行の任意のイベントが行を作成する別のテーブルは、すぐに非常に大きくなる可能性があります (数百万行)。