[前][次][番号順一覧][スレッド一覧]

mysql:14774

From: Mikiya Okuno <Mikiya Okuno <Mikiya.Okuno@xxxxxxxxxx>>
Date: Thu, 12 Mar 2009 09:50:46 +0900
Subject: [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@xxxxxxxxxx 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 」
> -------------------------------------------------
>
> 「連続しないキー部分に対して」とは、どういう事なのでしょうか?
>
> よろしくお願い致します。
>
>


[前][次][番号順一覧][スレッド一覧]

     14773 2009-03-12 09:31 ["linux@xxxxxxxxxx" <] MySQL による ORDER BY の最適化          
->   14774 2009-03-12 09:50 ┣[Mikiya Okuno <Mikiya]                                       
     14775 2009-03-12 10:05 ┗[HIRATSUKA Sadao <hir]                                       
     14776 2009-03-12 10:20  ┗[HIRATSUKA Sadao <hir]                                     
     14777 2009-03-12 19:46   ┗["linux@xxxxxxxxxx" <]