いやインデクスは効かせられるのです
http://soudai1025.blogspot.com/2011/08/blog-post.html で、PostGISではインデクスが有効利用されない、とおっしゃってることについて、日本語や…それはともかく、ひとこと言わねばなるまい、ということで、つっこみを入れさせてもらいます。
PostGISでは、図形について、MBR(その図形を含む最小の長方形)ベースで、空間インデクスを付けられます。
点も幅・高さの無い長方形として空間インデクスを付けられます。
PostGISで、特定の範囲内にある点に絞って、指定した点からの距離を求めるクエリは、だいたいこんなかんじになります。
SELECT ST_Distance_Sphere(the_geom, 'SRID=4326;POINT(x y)'::Geometry) FROM table WHERE the_geom && ST_SetSRID('BOX2D(minx miny, maxx maxy)'::box2d, 4326);
'..POINT..'と'BOX2D...'は文字列リテラルです。なので、x,y と minx,miny,maxx,maxy とについては具体的な数を入れます。minx, miny とかは minx=x-rx, max=x+rx (rは半径(x方向)) といったかんじで求めます。
WHEREの "&&" で、minx,miny-maxx,maxy で描ける長方形の範囲で絞込みを行っています。これは空間インデクスが効きます。
指定した点から指定した距離内にある点を正確に絞り込む場合は検索範囲は円になりますが、長方形を使う場合は、円に外接する長方形となり、円よりも範囲が広くなります。円ベースでインデクスが効いた方が絞り込みの効率は良いと言えば良いですが、問題によりますが、若干絞り込み結果のレコード数が増えても、言うほど影響が出ないんじゃないかな、と思います。
なお、ここギコさんが http://kokogiko.net/m/archives/001641.html で「インデックスが効いていない」おっしゃってるのは、この関数では*1、空間インデクスが効かないから、です。