2010年10月25日のブックマーク (5件)

  • MySQLノウハウ

    いろいろなからメモってきたメモのメモ。出典を書いておくのを忘れた。思い出し次第補完するかも。 deleteのコストは高いので、無効化を示すフィールドを作ってupdateすべき slow query logに要注意 多くのエントリでほとんどのフィールドが同じ値を持つ場合はインデックスの効果が小さい →複合インデックスの効果が大きい 複合インデックスは指定の順番が大切。AとBという指定の場合、A単独でもインデックスの効果がある。逆は真でない。 インデックスが使われる場面は フィールド値を定数と比較するとき (where name = 'hogehoge') フィールド値でJOINするとき (where a.name = b.name) フィールド値の範囲を求めるとき (<,>,between) LIKE句が文字列から始まるとき (where name like 'hoge%') min(),

  • 認証がかかっています

    こちらのブログには認証がかかっています。 ユーザー名 パスワード Powered by Seesaa

    tontenkarari
    tontenkarari 2010/10/25
    複合インデックスの注意点
  • MySQL :: MySQL 4.1 リファレンスマニュアル :: 5.2.8 MySQL による ORDER BY の最適化

    余分なソートを行わずに ORDER BY または GROUP BY の要求に応じるために、MySQL はインデックスを使用する場合があります。 全ての使用されていないインデックス部分と他の部分が WHERE 節内で定数であるカラムである場合、ORDER BY がインデックスに完全にマッチしない場合でもこのインデックスを使用できます。 次のクエリではインデックスを使用して ORDER BY / GROUP BY 部分を解決します。 SELECT * FROM t1 ORDER BY key_part1,key_part2,... SELECT * FROM t1 WHERE key_part1=constant ORDER BY key_part2 SELECT * FROM t1 WHERE key_part1=constant GROUP BY key_part2 SELECT * FR

    tontenkarari
    tontenkarari 2010/10/25
    インデックスが使われない場合があるので注意
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 8.3.1 MySQL のインデックスの使用の仕組み

    インデックスは特定のカラム値のある行をすばやく見つけるために使用されます。 インデックスがないと、MySQL は関連する行を見つけるために、先頭行から始めてテーブル全体を読み取る必要があります。 テーブルが大きいほど、このコストが大きくなります。 テーブルに問題のカラムのインデックスが含まれている場合、MySQL はすべてのデータを調べる必要なく、データファイルの途中のシークする位置をすばやく特定できます。 これはすべての行を順次読み取るよりはるかに高速です。 ほとんどの MySQL インデックス (PRIMARY KEY、UNIQUE、INDEX、および FULLTEXT) は B ツリーに格納されます。 例外: 空間データ型のインデックスは R ツリーを使用します。MEMORY テーブルはハッシュインデックスもサポートします。InnoDB は FULLTEXT インデックスの逆のリスト

    tontenkarari
    tontenkarari 2010/10/25
    インデックスが使われる条件
  • MySQL :: MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 4.4.3 複合インデックス

    MySQL では複数のカラムに対するインデックスを作成できます。インデックスは最大 16 カラムで構成できます。特定のデータ型に関しては、カラムの接頭辞をインデックス上で検索することができます。項4.4.2. 「カラムインデックス」を参照してください) 複数カラムのインデックス (複合インデックス) は、インデックス化されたカラムの値を連結することによって生成された値が含まれ、ソート化された配列と見なすことができます。 MySQL では、WHERE 節内でインデックスの第 1 カラムを指定する場合、ほかのカラムの値を指定しなくても、クエリーが高速化できるように複合インデックスが使用されます。 次のようなテーブルが定義されているとします。 CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name

    tontenkarari
    tontenkarari 2010/10/25
    複合インデックスについて