У меня довольно простая структура БД.У меня есть 12 столбцов в одной таблице, большинство из них varchar (<50), с примерно 8500 строками. </p>
Когда я выполняю следующий запрос на iPhone 4, я получаю в среднем 2,5-3 секунды для результатов:
SELECT * FROM names ORDER BY name COLLATE NOCASE ASC LIMIT 20
Не похоже, что подобные вещи должны быть такими медленными.Интересно, что тот же запрос из того же приложения, запущенного на iPod второго поколения, быстрее примерно на 1,5 секунды.Эта часть за мной.
У меня есть другие вопросы, которые имеют ту же проблему: SELECT * FROM names WHERE SEX = ?1 AND ORIGIN = ?2 ORDER BY name COLLATE NOCASE ASC LIMIT 20
и
SELECT * FROM names WHERE name LIKE ?3 AND SEX = ?1 AND ORIGIN = ?2 ORDER BY name COLLATE NOCASE ASC LIMIT 20
и т. Д.
Я добавил индекс в базу данных SQLite: CREATE INDEX names_idx ON names (name, origin, sex, meaning)
, где name
, origin
, sex
и meaning
- столбцы, к которым я склонен выполнять запросы с помощью WHERE
и LIKE
операторы.
Есть какие-нибудь мысли по поводу улучшения производительности этих поисков или это настолько атомарно, насколько это возможно?