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

mysql:9477

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

大塚です。

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

「ある値」は動的です。
MLの投稿ではmySQLに発行されるコマンド、と言う事で

> SELECT hoge FROM foo ORDER BY ABS(200 - hoge) LIMIT 10;

的な書き方をしましたが、実運用上は例えばperl-DBI等で

$val = 200;
$dbh->prepare('SELECT ... ORDER BY ABS(? - hoge) ...')->execute($val);

といった形を考えています。

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

なるほど、そう考えると判り易いですね。

SQL文で直接「ある値の周辺値」を求めるのが難しい(やろうとすると全件
トレースになる)のは理解しました。
ただ、そういう要件はよくある事だと思うのですが、一般的なやり方という
ものはないのでしょうか。
要件の詳細次第で個々考えていくしかないのでしょうか。

以上、よろしくお願いいたします。

*********************************************************
       @北緯35°36′47 東経139°42′06 JGD2000
 大塚 恒平 OHTSUKA Ko-hei <<nene@xxxxxxxxxx>>
 i-mode・EZWEB・vodafone Live!・Air H" Phone多分対応(汗)
  位置情報総合サイト「ここギコ!」http://kokogiko.net/


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

      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]