Подтвердить что ты не робот

Android SQLite: какой запрос ( "запрос" или "rawQuery" ) выполняется быстрее?

Я разрабатываю одно приложение для базы данных Android. Я просто хочу знать, какой код выполняется быстрее и в чем разница между ними?

Запрос - 1=

db.rawQuery("select * from user_table where user_id =" + userId, null);

Запрос - 2=

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = " + userId, null, null, null, null);
4b9b3361

Ответ 1

Использовать запрос.

Запросы предварительной компиляции Android и использование слишком большого количества различных необработанных запросов могут вызвать проблемы с производительностью.

Использовать rawQuery только тогда, когда это абсолютно необходимо.

Кроме того, оба примера имеют серьезную проблему безопасности SQL Injection.

Вы должны дезинформировать userId.

Самое очевидное, что нужно сделать Android, используя:

db.query(USER_TABLE_NAME, ALL_COLUMNS, "user_id = ?", new String[] {userId}, null, null, null);

Ответ 2

Взгляд на SQLiteDatabase.java в источнике android показывает, что запрос (..) заканчивается вызовом QueryBuilder для построения запроса как одной строки, а затем он по существу вызывает rawQuery(). Они должны быть примерно эквивалентными, предполагая, что вы также сделали одну и ту же работу, чтобы создать собственное выражение.