短期的な解決策
WHERE FIND_IN_SET('Queensland', csv_column)
...どちらかの端にワイルドカードを指定してLIKEを使用することは、一致する量/少ない数によっては危険であるためです(また、テーブルスキャンも保証されます)。どちらかの側にワイルドカードを使用したLIKEのパフォーマンスは、REGEXPと同等です。つまり、悪いことを意味します。
長期的なソリューション
カンマ区切りの値を保存しないでください。3つのテーブルを含む適切な多対多の関係を使用してください。
物事
- things_id(主キー)
オーストラリアの州
- State_id(主キー)
- State_name
Things_to_Auz_States
- things_id(主キー、
THINGS
への外部キー 表) - State_id(主キー、
AUSTRALIAN_STATES
への外部キー 表)
3つのテーブルからデータを取得するには、JOINが必要ですが、特定の状態または2つの特定の状態に関連付けられている数などを知りたい場合は、適切なモデルです。