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]