タグ

mysqlとチューニングに関するjetglassのブックマーク (3)

  • MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?

    な、なんと person_diaryはインデックスが適用されずにフルスキャンされ(1行目のkeyがNULL) 逆にpersonはid列に設定してあるプライマリキーが適用される(2行目のkeyがPRIMARY) という二つの謎な現象が発生しました。 そもそもpersonはnameカラムに対してLIKE検索しているのに、id列のプライマリキーが効いちゃうのは全く納得いきません。なぜ、どうしてこんなことが起こるのでしょう? 原因 私がMySQLに期待していた動きとしては ①サブクエリを実行してperson.idのリストをメモリ中に作成 ②person.person_idに張られているインデックスを使って検索 というところでした。 期待通りに動いてくれなかったのには二つのMySQLの特性が関係していました。 特性① サブクエリを含むSQLは外側から先に実行される MySQLの場合、サブクエリを含む

    MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?
  • なぜMySQLのサブクエリは遅いのか。

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
  • MySQLパーティショニングでパフォーマンスアップ! | QK

    mysqlには、レンジパーティションってものがありまして、うーなんでしょ?ある規則にしがったデータをおのおののデータファイルに振り分けてくれる機能です。 ・データ領域が分割されるため、大量のデータを処理することによる性能上のボトルネックの発生を抑えられる ・MyISAMなど、テーブルサイズに上限がある場合でもそれ以上のデータを格納することが可能になる といった点です、少ないデータですとこれといった利点はないかと思いますが、数百万規模データですと、このデータ分割が、大きな効果を呼ぶ。。かもしれないですし、そうでないかもしれません(汗 ただ、はっきりといえるのが、ある規則に従ったデータを、SELECTする際にそのSELECTで必要の無いデータまで、mysqlがシークする必要がないっていったところでしょうか?ただし、データをまたぐ検索が発生する場合は、パフォーマンスは非パーティションテーブルと比

  • 1