У меня есть файл базы данных с несколькими таблицами, и каждая таблица содержит минимум 20 тыс. Записей. Теперь я пытаюсь выполнить запрос внутреннего соединения в iPhone с помощью sqlite3.
SELECT DISTINCT abc.id, abc.full_name FROM abc INNER JOIN xyz ON abc.id = xyz.id limit 10 ;
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
// populating my custom objects
}
}
Когда я пытаюсь выполнить тот же запрос с таблицами с меньшим количеством строк, команда sqlite3_step () работает нормально.
Было бы замечательно, если бы кто-то мог пролить свет на то, что именно происходит, когда выполняется оператор. Будут ли целые таблицы загружаться в память перед выполнением запроса, и если да, то что может быть макс. ограничение на количество записей в таблице при выполнении внутреннего соединения.
Когда я пытаюсь получить записи из одной таблицы с записями 50 КБ, она работает без проблем.
Заранее спасибо
Sudheer