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

ハウツー:検索結果のランキング

    MySQLの「UNIONALL」を使用して、1つのクエリでこれを達成できます。

    PHPでトークンをループして、トークンごとにUNIONALLを作成します。

    たとえば、トークンが「x」、「y」、「z」の場合、クエリは次のようになります

    SELECT * FROM `entries` 
    WHERE token like "%x%" union all 
        SELECT * FROM `entries` 
        WHERE token like "%y%" union all 
            SELECT * FROM `entries` 
            WHERE token like "%z%" ORDER BY score ect...
    

    order句は、結果セット全体を1つとして操作する必要があります。これは、必要なものです。

    パフォーマンスの観点からはそれほど高速ではありませんが(私は推測しています)、データベースの場合、速度の観点からの主なオーバーヘッドは、多くの場合、PHPからデータベースエンジンにクエリを送信して結果を受信することです。この手法では、これはトークンごとに1回ではなく、1回だけ発生するため、パフォーマンスが向上します。それで十分かどうかはわかりません。



    1. ユーザー名とパスワードをデータベースに保存しても安全ですか?

    2. Railsはランダムなレコードを選択します

    3. PHP5.3へのアップグレード後にMySQLデータベースの結果を表示する際の誤った文字エンコードの解決

    4. PHP PDOクラスプログラミング:致命的なエラー:ブール値でメンバー関数fetchAll()を呼び出します