ホームページ >バックエンド開発 >PHPチュートリアル >mysqlクエリ効率の問題
問題は次のとおりです:
データベース内のフィールドのデータは、1,2,3,4,5, のようにカンマで区切られて保存されます。
クエリ中に渡されるパラメータは、次のような配列です:array (1,2 );
私の愚かな方法は、この配列をループし、次に like を使用して結合することです。次のようになります。
リーリー
返信内容:
データベース内のフィールドのデータは、1,2,3,4,5, のようにカンマで区切られて保存されます。
クエリ中に渡されるパラメータは、次のような配列です:array (1,2 );
私の愚かな方法は、この配列をループし、次のように like を使用して結合することです。
リーリー
しかし、データ量が多い場合、この効率は低すぎます。もっと効果的な方法はありますか?ありがとう。 。
リーリー
1. フィールドのタイプを SET に変更します。FINd_IN_SET を使用すると、like を使用するよりもはるかに高速になりますが、フィールドに対して使用する場合はテーブル全体をスキャンする必要があります。 SET タイプにはいくつかの制限があります。SET は、小さな値範囲、固定値、および全体的なクエリを含む状態コレクションに適していることが推奨されます。たとえば、ある人が中国のどの省を訪れたかを記録します。2 人の人が同じ省を訪れたかどうかを直接比較したり、違いを直接取得したりできます。どの人が特定の省のみを訪れたかを効率的にクエリできますが、確認することもできます。特定の州または特定の州を訪れた人々は、依然としてすべてのフォームをスキャンしています。
リーリー