2017-11-13 6 views
0

誰でもこの現象に関する情報がありますか?奇妙な行動がその最初の時間である私は、このフルテキストクエリが初めて低速で実行されました。

"id" "select_type" "table" "type" "possible_keys" "key" "key_len" "ref" "rows" "Extra" 
"1" "SIMPLE" "mk" "fulltext" "SearchText" "SearchText" "0" \N "1" "Using where" 

検索テキストのために、このクエリを同じDBに

SELECT 
       mk.IdMedia      
      FROM 
       mediakeyword mk     
      WHERE 
       MATCH(mk.SearchText) AGAINST('+"france"' IN BOOLEAN MODE) > 0 

計画をフルテキストインデックスを持つ実行していることだし、エンジンはMyISAMの

であるIクエリを実行すると計算時間は2,324秒、2回目は0,015です、なぜですか?

mysqlに同じような動作をさせる方法がありますか?

答えて

1

FULLTEXTはInnoDBで利用できます。移行を検討する

につながることができる2つのものがあり、「最初は遅いです;第二は速いです」:

  • クエリを初めて実行したとき、それはディスクからインデックスおよび/またはデータ・ブロックをフェッチする必要があるかもしれません。 2回目には、これらのブロックがRAMにキャッシュされるため、はるかに高速です。

  • "クエリキャッシュ"は、有効な場合、クエリとその結果セットを記録します。したがって、正確に同じSELECTが2回実行された場合、以前に計算された結果を単純に検索することができます。

+0

強制的に特定のテーブルにRAMを使用する操作がいくつかありますか?この場合mediakeyword?なぜInnoDBに移行するのですか?ありがとう – andrea

+0

手動でRAMを割り当てようとするのは、通常、バックファイヤーです。 (そして、そのような方法はありません。)壊れたインデックスや一貫性のないデータを取得したり、InnoDBに切り替えた理由について議論することができます。そのようなリストはウェブ上にたくさんあります。 –

関連する問題