Максимальное количество строк в таблице sqlite? - PullRequest
8 голосов
/ 12 января 2012

Есть ли ограничение по количеству строк для таблицы sql lite? Мое приложение выдает ошибку "нет такой таблицы х ...", когда в этой таблице более 6000 строк. Ниже 6000 строк не выдает никакой ошибки.

Спасибо.

Это запрос.

    db = (new DatabaseHelper(this)).getWritableDatabase();

    cursor = db.rawQuery("SELECT continentes._id, continentes.ContinenteID, continentes.Continente" 
            + " FROM continentes"
            + " WHERE continentes.Continente LIKE ?"
            + " GROUP BY continentes.ContinenteID, continentes.Continente ORDER BY continentes.Continente",
                new String[]{"%" + searchText.getText().toString() + "%"});

Здесь я создаю таблицу

@Override
public void onCreate(SQLiteDatabase db) {
    String s;
    try {
        Toast.makeText(context, "Creating Database", 2000).show();
        InputStream in = context.getResources().openRawResource(R.raw.continentes);
        DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = builder.parse(in, null);
        NodeList statements = doc.getElementsByTagName("statement");
        for (int i=0; i<statements.getLength(); i++) {
            s = statements.item(i).getChildNodes().item(0).getNodeValue();
            db.execSQL(s);
        }
    } catch (Throwable t) {
        Toast.makeText(context, t.toString(), 50000).show();

решено !!! Я просто выясняю, почему у меня такая проблема. Поскольку файлы, которые я использую с данными для создания и заполнения базы данных sql, не могут иметь более 1,2 МБ. Итак, я разделил их, и у меня больше нет проблем. Спасибо всем.

Ответы [ 4 ]

7 голосов
/ 12 января 2012

Вы можете получить стандартную информацию о пределах SQLite , но это не будет причиной вашей проблемы, так как лимит на самом деле очень высок.(От 2 до 64!)

Скорее всего, ваша проблема связана с тем, как ваше приложение вставляет записи и / или типы вставляемых записей.

Можете ли вы публиковатькакой-то код для приложения и как он обрабатывает вставку?Я могу пересмотреть свой ответ после прочтения.

В качестве дополнительного совета убедитесь, что вы установили:

Cursor myCursor = db.rawQuery("PRAGMA synchronous=OFF", null); 
myCursor.close();

Поскольку это действительно может повысить производительность ваших больших объемных вставок.

6 голосов
/ 12 января 2012

Максимальное количество строк в таблице

Теоретическое максимальное количество строк в таблице составляет 2 ^ 64 (18446744073709551616 или около 1,8e + 19). Этот предел недоступен, так как максимальный размер базы данных в 14 терабайт будет достигнут первым. База данных объемом 14 терабайт может содержать не более 1e + 13 строк, и только в том случае, если индексов нет и каждая строка содержит очень мало данных.

отсюда: http://www.sqlite.org/limits.html

1 голос
/ 12 января 2012

Нет таких ограничений, см. Ниже:

Там написано:

Максимальное количество строк в таблице

Теоретическое максимальное количество строк в таблице составляет 264 (18446744073709551616 или около 1,8е + 19). Этот предел недоступен поскольку максимальный размер базы данных 14 терабайт будет достигнут первым. База данных объемом 14 терабайт может содержать не более 1e + 13 строки, и только тогда, если нет индексов и если каждая строка содержит очень мало данных.

0 голосов
/ 12 января 2012

Максимальное количество строк - 2 ^ 64.

Вот страница ограничения .

...