[Ludia-users 177] 検索結果のソート順について

Back to archive index

松風 敬 shohu****@kvd*****
2008年 1月 16日 (水) 11:39:38 JST


はじめまして、松風と申します。

現在、仕事でludiaを使用しているのですが、
検索結果のソート順について確認させて頂ければと思います。

■確認内容

ludiaで"@@"検索した時に、先にDBに挿入したデータから検索結果
が表示される?と思われる動作を利用して、アプリを構築していま
す。
※これは必須条件とさせてください。

しかし、DBのデータ件数が数百万件を超えると、この

"先にDBに挿入したデータから検索結果が表示される"

の法則が使えなくなるようなので、確認させてください。

■詳細

あるDBに、以下のように、address長さが短い順にINSERT文で入
れていきます。

ID |    address
----------------------
1  | New York 1
2  | New York 12
3  | New York 123
4  | New York 1234
     :
     :

※ DDL
 CREATE TABLE tbl (
     id             serial primary key,
     txt            text
 );
 CREATE INDEX idx ON tbl USING fulltext (txt);

ソート件数を以下のように1件に設定しておき、

set ludia.max_n_sort_result TO 1
 
上記状態において

select * from tbl where txt @@ 'New';

を実行すると、

ID  |   txt
------------
1   | New York 1
(1 row)

のようにIDが一番小さい値(先にソートしたもの)が通常返却され
ます。

しかし、これがデータ数が数百万件を挿入した後に実行すると

ID    |   txt
------------
79... | New York 1234....
(1 row)

のように、"New York 1"ではないほかの値が返ってくるようです。
※数十万件程度の件数であれば、"New York 1"が返ってくるようです

データ数が数百万件を超えても、"New York 1"を返却するように
したいため、

set ludia.max_n_sort_result TO 1000000

などとmax_n_sort_resultを大きくしたり、ORDER BY ID を指定
すると、"New York 1"を返却してくれるのですが、速度パフォー
マンスが落ちてしまいます。

■確認

データが数百万件を超える状態、
set ludia.max_n_sort_result TO 1
ORDER BY ID を指定しない

の時に、"New York 1" を返却するような事はできるのでしょうか?

お手数ですが、どなたかご回答頂ければ幸いです。
もし不明な点等あればご指摘ください。

宜しくお願い致します。

/*************************************************/
  Postcode     : 
  Address      : 
  TEL          : 
  Name         : 松風 敬
  Mail         : shohu****@kvd*****
  Blog         : http://d.hatena.ne.jp/shohu33/
/*************************************************/




Ludia-users メーリングリストの案内
Back to archive index