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

SQL_NO_CACHEを使用する場合

    SQL_NO_CACHE

    SELECTステートメントのSELECT部分​​の後、フィールドリストの前にSQL_NO_CACHEを追加するだけです。以下の最初のクエリは、有効になっていてクエリがキャッシュされている場合、クエリキャッシュを使用します。

    SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms
    

    以下の2番目のクエリは、クエリキャッシュを使用しません:

    SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time
    

    これは、クエリのベンチマークを行うときに特に役立ちます。クエリキャッシュが有効になっている場合、最初のクエリには時間がかかることがありますが、2番目以降のクエリはほぼ瞬時に実行されます。 SQL_NO_CACHEを使用すると、クエリキャッシュが使用されないことが保証され、結果の時間を安全に比較できます。SQL_NO_CACHEヒントは、特定のクエリに対するMySQLの組み込みクエリキャッシュメカニズムをオフにします。非常に動的なクエリ(キーワード検索や夜間にのみ実行されるレポートなど)でこのヒントを使用すると、MySQLでクエリキャッシュをより効率的にすることができます。クエリキャッシュがオンになっていることを確認してください。オンになっていない場合は、この必要はありません。コマンド。

    SQL_CACHEとSQL_NO_CACHEは何ですか?

    SQL_CACHEおよびSQL_NO_CACHEオプションは、クエリキャッシュでのクエリ結果のキャッシュに影響します。 SQL_CACHEは、結果がキャッシュ可能であり、query_cache_typeシステム変数の値が2またはDEMANDである場合、結果をクエリキャッシュに格納するようにMySQLに指示します。 SQL_NO_CACHEを使用すると、サーバーはクエリキャッシュを使用しません。クエリキャッシュをチェックして結果がすでにキャッシュされているかどうかを確認したり、クエリ結果をキャッシュしたりすることはありません。 (パーサーの制限により、SQL_NO_CACHEキーワードの前後にスペース文字が必要です。改行などの非スペースにより、サーバーはクエリキャッシュをチェックして、結果が既にキャッシュされているかどうかを確認します。)

    私の意見によると、NO_CACHEは、「CACHE」が有効で、データベース内のデータが動的に更新される場合に使用できます。つまり、データベースのデータキャッシュは信頼できません。たとえば、ユーザーパスワードハッシュの保存は頻繁に行われるため、CACHEに依存できません。データ変更の可能性

    便利なシナリオの更新

    1)クエリの速度をテストするためにキャッシュを使用しないように強制する



    1. パラメータ化されたOracle挿入クエリを作成する方法は?

    2. godaddyでMySQLとEntityFrameworkを使用したセキュリティ例外

    3. MySQLはグループの最新レコードを取得します

    4. Oracle D2k、Oracle Forms 10g、OracleForms6iで添付ファイル付きの電子メールを送信する