2016-08-12 10 views
0

私は、ストアのリストから自動完成する必要がある検索機能を持つアンドロイドアプリケーションを作成しています。このリストには、数千のストアしかありません。LIKEのオートコンプリートはデータベースにも負荷がかかりますか?

現在の方法は、ユーザーが入力をやめた後数百msごとにLIKEクエリをデータベースに送信し、これらの結果をオートコンプリートリストに入力することです。

この方法を使用するとデータベースにストレスがかかるのですか?

接続が遅いユーザーの場合は連続通話を行うのが難しく、すべてのストアをメモリにロードしてそこからフィルタする必要があるため、これはうまくいかないことが示唆されています。

+0

代わりに、部分文字列が機能します。左(フィールド、3)= 'ABC'は 'ABC%'のようなフィールドよりもうまく動作します。とにかくローカルメモリに保存したいと思う – Twelfth

答えて

0

私の仕事では、2,3ヶ月前に同様の問題に遭遇しました。ユーザーが入力したテキストボックスの内容は、使用可能なオプションをフィルタリングして文字列のリストから選択することになっていました。ユーザーがキーを入力するたびにリストを更新する必要があったため、テキストに一致するレコードをフェッチするデータベース呼び出しが1秒に数回行われました。

これは、誰かが入力したときに更新が遅くなってしまいました。これは、数千のレコードと、サイトにアクセスしていたサーバーでのみ発生しました。

誰かが入力できるようにすばやく更新する場合は、多くのデータベース呼び出しを行うだけでは機能しません。ユーザーは電話バッファにテキストを入力させる必要があります。

短く: 1つのデータベース呼び出しを作成し、電話機にロードしてそこからフィルタアルゴリズムを実行します。

0

バックエンドのストアリストをユーザーのデバイスに定期的に同期させ、ローカルにオートコンプリートを実装することが最善の方法です。

JobScheduler APIを使用すると、バックグラウンドの同期プロセスに制約を柔軟に設定できます。

関連する問題