タグ

explainに関するkarahiyoのブックマーク (4)

  • 使用するインデックスを明示する – MySQL インデックスヒントで最適化 | お名前.com、さくらのVPS等のサーバーでの開発・設定メモ

    MySQLでクエリをExplainした時にpossible_keysに、IDX_IMPORT, IDX_FSEARCH, IDX_STAT等と複数の候補が存在してkeyにIDX_STATが選択されている時、実際にはIDX_IMPORTの方が高速だったり、他のインデックスよりIDX_STATが低速だったりする時、このインデックスを利用すると高速・低速であるというのをオプティマイザへ知らせる方法としてインデックスヒントがある。 インデックスヒントは SELECT * FROM estimates USE INDEX(IDX_IMPORT, IDX_FSEARCH) WHERE total>=10000 AND type=1 のように、テーブルに対してUSE/IGNORE/FORCEにより指定する。 USE INDEXはその名の通り指定したインデックスを使用することを推奨するので、インデックス候

  • InnoDBのプライマリキーとセカンダリキー | Yakst

    InnoDBのテーブルから、プライマリキーを取得するクエリを書いたのに、なぜかセカンダリインデックスが使われることがある。この仕組みを、InnoDBのインデックスの格納方法から解説する。 今日、EXPLAINの結果を色々と試してみている時に、興味深い問題にぶち当たったので、ドキュメントには載っていないこの現象をここで共有しておこう。 とても単純なInnoDBのテーブルを考えるところから始めよう。2つのINT型のカラムを持ち、最初のカラムがプライマリキーで、2番目のカラムに普通のインデックスが張ってある。 CREATE TABLE `t1` ( `id1` int(10) unsigned NOT NULL, `id2` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id1`), KEY `id2` (`id2`) ) ENGINE=InnoDB;

    InnoDBのプライマリキーとセカンダリキー | Yakst
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
  • インターネット10分講座:DNSキャッシュポイズニング - JPNIC

    今回の10分講座は、最近になって新たな攻撃方法が発見され、対応の緊急性が高まったDNSキャッシュポイズニングについて解説します。 DNSの問い合わせの流れ まずはじめに、DNSではクライアントがどのようにドメイン名の情報を得るのか、その流れについて説明します(図1)。 エンドユーザーのPCなどのDNSを利用するクライアントから、問い合わせを行うネームサーバに対し、問い合わせを依頼します。 依頼を受けたネームサーバは、問い合わせ内容を元に、ルートサーバから委任をたどりながら順に問い合わせを行い、目的のドメイン名情報を持つ権威サーバから結果を取得します。 依頼を受けたネームサーバは、問い合わせの結果をクライアントへ返答します。 図1:DNS 問い合わせ DNSのキャッシュ 問い合わせを処理するネームサーバは、処理の途中で得たドメイン名の情報を一時的にローカルに保存することができます。この処理を

  • 1