2009年3月12日

[mysql 14774] Re: MySQL による ORDER BY の最適化

こんにちは。

そもそも「キー部分」とはマルチカラムインデックスにおける一部のカラムのことを指しています。
例えば、INDEX (col1, col2, col3)というような場合、それぞれのカラムがキー部分である
というわけです。

SELECT * FROM t1 WHERE col1=const ORDER BY col2=const;

これは ORDER BY においてインデックスが使用されます。
しかし、次のような場合は使用されません。

SELECT * FROM t1 WHERE colX=const ORDER BY col2=const;
※ キーを構成しているカラム以外のカラムが使用されている。

SELECT * FROM t1 WHERE col1=const ORDER BY col3=const;
※ col2を抜かしてしまっているので連続していない。

このページはわかり辛いので、下記にソートについてまとめてあります。
手前味噌ですがご参考まで。
http://nippondanji.blogspot.com/2008/12/2008.html

--
Mikiya Okuno, MySQL Support Engineer
Sun Microsystems KK, Tokyo, Japan
http://www-jp.mysql.com/

On 12/03/2009, at 9:31 AM, linux@xxxxx wrote:

> ヨコタと申します。
>
> 以下のページで理解出来ない箇所があるのですが・・
>
> MySQL による ORDER BY の最適化
> http://dev.mysql.com/doc/refman/4.1/ja/order-by-optimisation.html
>
> -------------------------------------------------
> MySQL で ORDER BY の解決にインデックスを使用できない場合は以下のとおりです
>
> 「連続しないキー部分に対して ORDER BY を実行する場合。
> SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2 」
> -------------------------------------------------
>
> 「連続しないキー部分に対して」とは、どういう事なのでしょうか?
>
> よろしくお願い致します。
>
>

投稿者 xml-rpc : 2009年3月12日 09:50
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/83168
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。