sql >> データベース >  >> RDS >> Mysql

phpとmysqlデータベースを使用するときに効果的な検索アルゴリズムを実装する方法は?

    これを行うためのいくつかの異なる方法:

    より高速なもの(パフォーマンスの観点から)は次のとおりです。select * FROM Table where keyword LIKE '%value%' これの秘訣は、ワイルドカードである%を配置することです。これは、この値で終わるか始まるすべてを検索することを意味します。

    より柔軟ですが(少し)遅いものは、REGEXP関数である可能性があります:

    Select * FROM Table WHERE keyword REGEXP 'value'
    

    これは正規表現の力を利用しているので、好きなだけ精巧にできます。ただし、上記のように残すと、一種の「貧乏人のGoogle」になり、検索を全体的なフィールドの断片にすることができます。

    名前を検索しようとすると、粘着性のある部分が入ります。たとえば、SMIを検索した場合、どちらも「smith」という名前を検索します。ただし、名前のフィールドが区切られている場合は、どちらも「JonSmith」を検出しません。したがって、Jon OR Smith OR Jon Smith OR Smith、Jonのいずれかを検索するには、連結を行う必要があります。そこから本当に雪だるま式になります。

    もちろん、ある種の高度な検索を実行している場合は、それに応じてクエリを調整する必要があります。したがって、たとえば、最初、最後、住所を検索する場合、クエリはそれぞれについてテストする必要があります。

    SELECT * FROM table WHERE first LIKE '%value%' OR last LIKE '%value%' OR address LIKE '%value'
    



    1. PDO::ERRMODE_EXCEPTIONは警告を抑制しません

    2. 言語設定がSQLServerのFORMAT()結果にどのように影響するか(T-SQLの例)

    3. クエリPythonで名前でフィールドを取得するにはどうすればよいですか?

    4. Java/jspでMSSQLServerストアドプロシージャを実行して、テーブルデータを返すにはどうすればよいですか?