Моя база данных / запросы sqlite3 очень медленные. Переключать или исправлять запросы? - PullRequest
0 голосов
/ 02 марта 2012

У меня есть большая база данных sqlite. Его 185 МБ.

Этот запрос занимает около 5 секунд и возвращает 2 строки. Я добавил индекс к user.name, а не Content.user_id. Это все еще занимает много секунд. Может ли sqlite работать с такими большими файлами? Существует ли простое исправление для частного приложения, например, указание sqlite поместить все в ram при запуске приложения? (Это C # .NET только для разработчиков).

select Content.*,name from user 
                join Content on Content.user_id=user.id 
                where user.name like 'some_name' order by some_col ASC;

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Попробуйте следующее:

Продолжение вашего ответа :

Я думаю, что у вас включена нечувствительная к регистру прагма LIKE. Это означает, что:

Вам следует пересоздать вашу базу данных и использовать name COLLATE NOCASE в определении столбца name пользователей таблицы. Таким образом, все сравнительные тесты для имен пользователей будут нечувствительны к регистру, как и ваш индекс. Таким образом, LIKE без учета регистра также может использовать индекс.

0 голосов
/ 02 марта 2012

Возможно, вам следует проверить свои индексы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...