Android-SQLite 데이터베이스에서 데이터를 검색하는 가장 빠른 방법

Fergaral

이미지 처리 앱이 있습니다. 내 앱은 이미 처리 된 이미지를 데이터베이스에 저장합니다. 사용자가 앱을 열 때마다 앱은 데이터베이스에서 이미 처리 된 사진을 확인하기 시작합니다. 내 코드를 사용하면이 프로세스는 약 10-20 초가 걸리며 내 요구에 많은 시간이 걸립니다. 데이터베이스에는 이미지의 경로 인 하나의 열만 있습니다. 전화에서 전체 이미지 목록을 가져온 다음 데이터베이스에서 목록의 모든 항목을 검색합니다.

내 코드는 다음과 같습니다.

public static ArrayList<String> getAlreadyProcessedPhotos(Context context, ArrayList<String> photos, SQLiteDatabase db)
{
    ArrayList<String> notAlreadyProcessedPhotos = new ArrayList<>();

    for(String path : photos)
    {
        File imgFile = new File(path);

        if (!Utils.isAlreadyProcessed(context, imgFile, db))
        {
            notAlreadyProcessedPhotos.add(path);
        }
    }

    return notAlreadyProcessedPhotos;
}

public static boolean isAlreadyProcessed(Context context, File imgFile, SQLiteDatabase photosDb) {
    if(photosDb == null || !photosDb.isOpen())
        photosDb = new DatabaseHelper(context).getReadableDatabase();

    String searchQuery = "SELECT * FROM " + DatabaseHelper.TABLE_NAME + " WHERE " + DatabaseHelper.PATH_COLUMN + "=?";

    Cursor cursor = photosDb.rawQuery(searchQuery, new String[] {imgFile.getAbsolutePath()});
    boolean result = cursor.moveToFirst();
    cursor.close();

    return result;
}
e4c5

확인하려는 각 파일에 대해 별도의 sqlite 쿼리를 실행하고 있습니다. 느린 것은 당연합니다! 100 개의 파일이있는 경우 100 개의 쿼리를 수행해야합니다. 그러나 이것은 하나의 간단한 쿼리로 실제로 수행 할 수 있습니다. 두 가지 방법을 하나로 결합하면됩니다.

public static ArrayList<String> getAlreadyProcessedPhotos(Context context, ArrayList<String> photos, SQLiteDatabase db)
{
   ArrayList<String> notAlreadyProcessedPhotos = new ArrayList<>();
   ArrayList<String> preProc = new ArrayList()

   for (String item: photos) {
       preProc.add("'" + item + "'");
   } 
   String inClause = TextUtils.join(",", preProc);

   String searchQuery = "SELECT " + DatabaseHelper.PATH_COLUMN + "FROM " + DatabaseHelper.TABLE_NAME + " WHERE " + DatabaseHelper.PATH_COLUMN + "NOT IN (" +inClause + ")";
   Cursor cursor = photosDb.rawQuery(searchQuery);

   while(cursor.moveToNext()) 
   {
        notAlreadyProcessedPhotos.add(cursor.getString(0);
   }

   return notAlreadyProcessedPhotos;
} 

이것은 하나의 루프, 하나의 쿼리입니다. 사진 배열 목록이 어디에서 왔는지 모르겠지만 추가 최적화의 여지가 있다는 느낌이 듭니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

데이터베이스에서 데이터를 검색하는 가장 빠른 방법

분류에서Dev

SQLite 데이터베이스에서 Android의 문자열 형식으로 데이터를 검색하는 방법

분류에서Dev

postgres 데이터베이스에서 android sqlite로 데이터를 가져 오는 방법

분류에서Dev

Google Apps Script, 외부 스프레드 시트에서 데이터를 검색하는 가장 빠른 방법

분류에서Dev

데이터베이스에서 페이지를 계산하는 가장 빠른 방법

분류에서Dev

내 SQLite 데이터베이스를 저장하고 다른 장치에서 액세스하는 방법

분류에서Dev

SQLite 데이터베이스 파일에서 백만 개의 레코드를 검색하여 WPF Datagrid에 표시하는 가장 빠른 방법은 무엇입니까?

분류에서Dev

Android SQLite 데이터베이스의 열에서 값을 가져 오는 방법

분류에서Dev

한 데이터베이스 (기본 serevr (sql))에서 Android 데이터베이스 (로컬 (sqlite))의 다른 데이터베이스로 데이터를 이동하는 방법

분류에서Dev

PHP : 데이터베이스 결과를 해시하는 가장 빠른 방법?

분류에서Dev

Android Studio, Sqlite 데이터베이스에서 데이터를 검색하고이를 textview에 표시하는 방법은 무엇입니까?

분류에서Dev

Android에서 기존 sqlite 데이터베이스의 데이터를 업데이트하는 방법

분류에서Dev

SQL 데이터베이스 (Azure)에서 최대 날짜를 가져 오는 가장 빠른 방법

분류에서Dev

Android SQLite 데이터베이스에서 테이블 이름을 검색하는 데 문제가 있습니다.

분류에서Dev

데이터베이스에서 데이터를 가져 오는 다른 방법

분류에서Dev

Firebase에서 SQLite Android로 데이터를 저장하는 방법

분류에서Dev

Laravel에 데이터를 삽입하는 가장 빠른 방법

분류에서Dev

다른 데이터베이스에서 데이터를 가져 와서 다른 데이터베이스에 저장하는 방법

분류에서Dev

Android에서 sqlite 데이터베이스를 정렬하는 방법

분류에서Dev

웹 서버로 데이터를 읽는 가장 빠른 방법

분류에서Dev

Android의 SQL DB에서 데이터를 검색하는 가장 좋은 방법

분류에서Dev

파일이 SQLite 데이터베이스인지 확인하는 빠른 방법

분류에서Dev

sqlite 데이터베이스에서 데이터를 검색하고 조각에 표시하는 방법

분류에서Dev

Postgres 용 C #에서 테이블 필드의 데이터베이스 데이터 유형을 얻는 가장 빠르고 빠른 방법은 무엇입니까?

분류에서Dev

C ++로 데이터를로드하는 가장 빠른 방법

분류에서Dev

PHP SQL : 하나의 HTML 형식에서 여러 데이터베이스에 데이터를 저장하는 방법 또는 한 데이터베이스에서 다른 데이터베이스로 데이터를 자동으로 복사하는 방법

분류에서Dev

Android 애플리케이션에서 Firebase 데이터베이스에 데이터를 추가하는 방법

분류에서Dev

이미지를 저장하고 비트 맵을 사용하여 sqlite 데이터베이스 또는 드로어 블 폴더에서 검색하는 방법

분류에서Dev

android studio는 Sqlite 데이터베이스에서 데이터를 검색하여 textview에 표시합니다

Related 관련 기사

  1. 1

    데이터베이스에서 데이터를 검색하는 가장 빠른 방법

  2. 2

    SQLite 데이터베이스에서 Android의 문자열 형식으로 데이터를 검색하는 방법

  3. 3

    postgres 데이터베이스에서 android sqlite로 데이터를 가져 오는 방법

  4. 4

    Google Apps Script, 외부 스프레드 시트에서 데이터를 검색하는 가장 빠른 방법

  5. 5

    데이터베이스에서 페이지를 계산하는 가장 빠른 방법

  6. 6

    내 SQLite 데이터베이스를 저장하고 다른 장치에서 액세스하는 방법

  7. 7

    SQLite 데이터베이스 파일에서 백만 개의 레코드를 검색하여 WPF Datagrid에 표시하는 가장 빠른 방법은 무엇입니까?

  8. 8

    Android SQLite 데이터베이스의 열에서 값을 가져 오는 방법

  9. 9

    한 데이터베이스 (기본 serevr (sql))에서 Android 데이터베이스 (로컬 (sqlite))의 다른 데이터베이스로 데이터를 이동하는 방법

  10. 10

    PHP : 데이터베이스 결과를 해시하는 가장 빠른 방법?

  11. 11

    Android Studio, Sqlite 데이터베이스에서 데이터를 검색하고이를 textview에 표시하는 방법은 무엇입니까?

  12. 12

    Android에서 기존 sqlite 데이터베이스의 데이터를 업데이트하는 방법

  13. 13

    SQL 데이터베이스 (Azure)에서 최대 날짜를 가져 오는 가장 빠른 방법

  14. 14

    Android SQLite 데이터베이스에서 테이블 이름을 검색하는 데 문제가 있습니다.

  15. 15

    데이터베이스에서 데이터를 가져 오는 다른 방법

  16. 16

    Firebase에서 SQLite Android로 데이터를 저장하는 방법

  17. 17

    Laravel에 데이터를 삽입하는 가장 빠른 방법

  18. 18

    다른 데이터베이스에서 데이터를 가져 와서 다른 데이터베이스에 저장하는 방법

  19. 19

    Android에서 sqlite 데이터베이스를 정렬하는 방법

  20. 20

    웹 서버로 데이터를 읽는 가장 빠른 방법

  21. 21

    Android의 SQL DB에서 데이터를 검색하는 가장 좋은 방법

  22. 22

    파일이 SQLite 데이터베이스인지 확인하는 빠른 방법

  23. 23

    sqlite 데이터베이스에서 데이터를 검색하고 조각에 표시하는 방법

  24. 24

    Postgres 용 C #에서 테이블 필드의 데이터베이스 데이터 유형을 얻는 가장 빠르고 빠른 방법은 무엇입니까?

  25. 25

    C ++로 데이터를로드하는 가장 빠른 방법

  26. 26

    PHP SQL : 하나의 HTML 형식에서 여러 데이터베이스에 데이터를 저장하는 방법 또는 한 데이터베이스에서 다른 데이터베이스로 데이터를 자동으로 복사하는 방법

  27. 27

    Android 애플리케이션에서 Firebase 데이터베이스에 데이터를 추가하는 방법

  28. 28

    이미지를 저장하고 비트 맵을 사용하여 sqlite 데이터베이스 또는 드로어 블 폴더에서 검색하는 방법

  29. 29

    android studio는 Sqlite 데이터베이스에서 데이터를 검색하여 textview에 표시합니다

뜨겁다태그

보관