カンマ区切り列のクエリの最適化
データベース テーブルには、値のカンマ区切りリストを持つ列が含まれることが多く、特定の値をクエリするときに課題が生じます。価値観。次の形式の「CATEGORIES」列を持つテーブルを考えてみましょう:
ID | CATEGORIES --------------- 1 | c1 2 | c2,c3 3 | c3,c2 4 | c3 5 | c4,c8,c5,c100
特定のカテゴリを検索するには、最初に LIKE ステートメントを選択できます:
SELECT id FROM table WHERE categories LIKE '%c2%'; -- Returns rows 2 and 3
ただし、LIKE ステートメントカンマ区切りの列では非効率的になる可能性があります。 Oracle の FIND_IN_SET() 関数は適切な代替手段のように思えるかもしれませんが、Oracle 10g では使用できません。
より最適なアプローチは、適切なワイルドカードを使用して LIKE を使用することです。
SELECT * FROM YourTable WHERE ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
このクエリ完全に一致するように検索値の前後にカンマを追加します。ただし、LIKE の使用により依然として速度が低下する可能性があります。
優れた解決策は、クロスリンクを使用してデータを別のテーブルに再構築し、カンマ区切り列の制限を回避し、クエリのパフォーマンスを大幅に向上させることです。
以上がデータベース内のカンマ区切り列のクエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。