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

mysql:9475

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

大塚です。
自己レスです。

定石を知りたいので解決したわけじゃないんですが、自分で考えてみた
方法です。

「ある値(例えば200)と比較してもっとも近い値」

を、ある値より大きい値、小さい値にわけて、

SELECT hoge, ABS(hoge-200) AS distance FROM foo WHERE hoge >= 200
  ORDER BY hoge ASC LIMIT 10;
SELECT hoge, ABS(200-hoge) AS distance FROM foo WHERE hoge < 200
  ORDER BY hoge DESC LIMIT 10;

の2つのクエリを実行して、出てきた合わせて20件だけの配列をプログラム
側のロジックでdistanceの少ない順にソートして10件抜き出せば早いかな、
と思いました。

でも、これだと先頭10件は早くても、途中30〜40件とかだとロジックが
煩雑になったり遅くなったりするので、やっぱり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]