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

mysql:9476

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Sun, 30 May 2004 11:33:53 +0900
Subject: [mysql 09476] Re: ある値の最も近い周辺値を抜き出す場合、インデックスは使われる?

 こんにちは。

OHTSUKA Ko-hei <techml@xxxxxxxxxx>さんの
<20040530090016.3604.TECHML@xxxxxxxxxx>
"[mysql 09474] ある値の最も近い周辺値を抜き出す場合、インデックスは使われる?"


> あるテーブルfooのあるフィールドhogeにインデックスを張っている
> としまして、その中である値(例えば200)と比較してもっとも近い値を
> 10抜き出す、等とした場合、これまで何気なく
> 
> SELECT hoge FROM foo ORDER BY ABS(200 - hoge) LIMIT 10;
> 
> 的な感じでやってたんですが、もしかしてこれだとインデックス
> 使われなくて全件参照して比較計算されてしまうんでしょうか。
> (というかExplainSQLで使われない事自体は確認したのですが)

 インデックス(の中身)は変動しない静的な情報ですね。ある値との差の絶対値
の「ある値」が静的なものであれば、ある値との差の絶対値のフィールドを設け、
それにインデックスを張れば良いでしょう。

 「ある値」が外部から与えられる変動するものであれば、ある値との差の絶対
値も変動する動的なものでしょう。静的な値が格納されているインデックスから
動的な値を検索しようとする事に無理があると思います。



    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



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

      9474 2004-05-30 09:25 [OHTSUKA Ko-hei <tech] ある値の最も近い周辺値を抜き出す場合、インデックスは使われる?
      9475 2004-05-30 10:39 ┣[OHTSUKA Ko-hei <tech]                                       
->    9476 2004-05-30 11:33 ┗[ML account <ml@xxxxx]                                       
      9477 2004-05-30 11:53  ┗[OHTSUKA Ko-hei <tech]                                     
      9478 2004-05-30 13:35   ┗[ML account <ml@xxxxx]                                   
      9481 2004-05-31 12:15    ┗[OHTSUKA Ko-hei <tech]