tbで1ミル。行私は(私は、コンピュータを再起動した後 - それがキャッシュされていますので、何も)を行う場合:私は、「LOADキャッシュTB1 INTO INDEX」(key_buffer_sizeは= 128Mと総インデックスを実行した後
1. SELECT price,city,state FROM tb1 WHERE zipId=13458;
結果は0.270sどちらが高速で、key_cacheまたはOSキャッシュですか?
に23rowsありますTB用サイズ82Mです): 2. SELECT price,city,state FROM tb1 WHERE zipId=24781;
結果は0.252sで23rowsで、Key_readsは、私は再びクエリを実行する場合、私は、OSのキャッシュに 'zipId' をロードした後Key_read_requestsが23
BUT
でインクリメントされ、一定のまま:
2. SELECT price,city,state FROM tb1 WHERE zipId=20548;
結果は22で0.006s
これは単なる例ですが、私は数十のテストと組み合わせを実行します。しかし、結果は常に同じです。
私は、MyISAM、WINDOWS 7 64、query_cacheのMySqlを使用しています。 zipId(プライマリキーではない)通常のインデックスです
SHIULD NOT key_cacheはOSキャッシュより高速ですか?
キャッシュにインデックスをロードした後、速度に大きな違いはないはずですか?
(私のテストではほとんど違いはありません)
私はこの問題に関して多くのウェブサイト、チュートリアル、ブログを読んだことがありますが、スピードの違いについては実際に話し合っていません。だから、どんなアイデアやリンクも大歓迎です。
ありがとうございます。
テーブルデザインとは何ですか?使用されるインデックスが脂質、価格、都市、州をカバーしていない場合、キーキャッシュは高速になりません。その他の場合、クエリはインデックスを読み取り、次にテーブルを読み取ります。 –
@Thomas Jones-Lowこのインデックスは、3列すべてをカバーしています。私はいくつかのテストをしましたが、1または3 colを選択すると大きな違いはありません。または選択された列がインデックスされている場合 – silversky
@Thomas Jones-Lowまた、同じクエリを使用する理由は、OSのキャッシュ・ケースではずっと高速です。 (基本的に同じステップが含まれています) – silversky