2016-11-02 7 views
0

iは以下のコードを使用してsqliteのデータベースで検索してみました:どのように高速な方法でアンドロイドsqliteデータベースで検索するには?

Cursor cusror; 
    cursor=db.rawQuery("SELECT * FROM "+ Contactsnew.TABLE02 + " WHERE " 
      + Contactsnew.userid + " = " + Contactsnew.userId + " AND " + 
     Contactsnew.TITLE + 
      " LIKE '"+search.getText()+"%'"); 

その首尾よく働くが、巨大なデータベースにそのゆっくりと取り組んでいます。私は自分のデータベース(資産からsqliteデータベースにコピーされた)で動作するように3番目のライブラリを見つける最後の日を探しました。

私は各ライブラリに続いてthis articleで上位5つのライブラリを見つけましたが、各データベースは、既存のデータベースではなく、それ自体で作成されたデータベースでのみ動作しています(既に資産からコピーされています)。

これらのライブラリのいずれかを使用し、それを私自身のデータベースまたは他のライブラリに参照して助けてください。既存のデータベースを使用して、追加する新しいデータベースなどのデータの同じフォーマットを持っていることを確認する必要があり

おかげ

+0

[trie](https://www.toptal.com/java/the-trie-a-neglected-data-structure)を使用することができます –

+0

リンクを提供してください.thanks @AshrafulIslam –

+0

https:// www.toptal.com/java/the-trie-a-neglected-data-structure –

答えて

1

準備された文を作成して再利用することをお勧めします。それを行うには、優秀なanswer on Stack Overflowがあります。すべての列が必要でない場合は、クエリによって返される列を減らすことを検討してください。さらに、関連する列の索引を作成することを検討してください。それは完全にLIKEを削除しようとすると、正規表現のテストにカーソルを反復しながら、価値があるかもしれない最後の手段として

CREATE INDEX idx01 ON test(id); 

testは、テーブル名とid列名になります。

1

。 おそらく、ここで最も簡単な解決策は、既存のデータを抽出して新しいデータベースに保存する「移行ユーティリティ」を作成することです。 クエリの処理速度を上げるために、データの異なる側面を別々のテーブルに格納します(単一テーブルのすべてではありません)。また、データに多くの依存性がある場合は、テーブルを使用しないnoSqlデータベース(Realm)を使用します。

関連する問題