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]