2010-11-20 6 views
0

wikiで検索するようなsomethingsを実装したい場合は、「apple」を検索するときに「a」と入力すると「a」から始まる単語が表示されます...入力時に実装できることがわかります記事を検索するSQLクエリは "a"から始まりますが、クエリの要求がますます増えると遅くなります。ありがとうございました。タイプと検索、パフォーマンスを改善する方法は?

答えて

2

サーバー側では、理想的にはメモリに結果をキャッシュする必要があります(Memcachedなど)。したがって、10人が「a」を押すと、データベースへのクエリは1つだけになり、メモリからの9つの超高速データアクセスになります。

帯域幅の最適化に関しては、データをJSON形式、あるいはカスタムデータ形式で送信する必要があります。この素晴らしい記事を参照してください:Building Fast Client-side Searches

1

ない、使用しているSQLのバージョンを確認しますが、いくつかの仮定:

  • あなたはあなたが唯一の(タイトルのように)必要なフィールドを返却している
  • を検索しているフィールドにインデックスを持っています、

    (擬似コード、知らないあなたのSQLの方言):*

私は、検索クエリのサイズに応じて、返される行数を削減して検討をお勧めしますどのような、のようなものが選択しません

if len(searchString)<=3 
    select top 50 title from table order by title 
else 
    select title from table order by title 

小さな検索ではさらに多くの行が返される可能性がありますが、ほとんどのユーザーは入力をやめる前に複数の文字を入力する可能性が高いため、最初のクエリではすべての行を返しません。

0

ないかもしれない明白な技術的な答えを、しかし、クライアント側のために私はあなたがいないキーを押してではなく、キーを押した後、Xミリ秒後に、その条件で検索イベントを起動することができると思います何も変わらない。だから、

私は「言葉」を検索したいと私はあなたが唯一の宇根要求を行う迅速な方法で、「W」「O」「R」「d」を入力し、明らかにあなたは、その要求のSQL道

を最適化することができる場合
関連する問題