У меня есть база данных sqlite cipher с около 80000 записями (содержит 7 столбцов). В настоящее время на поиск записей уходит слишком много времени. Мне нужен оптимизированный способ поиска 1 или более записей на основе некоторых критериев (нужно что-то вроде индексации), чтобы я мог сократить время поиска. У кого-нибудь есть идеи о том, как действовать, чтобы достичь этого? Нужна срочная помощь. (
Редакция:
Я использую API шифрования sqlite, потому что мне нужно хранить зашифрованные данные в базе данных sqlite. Я установил ключ прагмы, и используемое шифрование - AES - 256. Я также создал индекс для каждой таблицы в моей базе данных. Но мой поиск не быстрый. Это занимает слишком много времени. Нужно решить это как можно скорее.
2-е ВРЕМЯ
Эй, ребята, я сильно застрял на этот раз. Я делаю поиск, как только пользователь нажимает на текстовое поле. Чтобы подвести итог проблемы, позвольте мне рассказать вам поток.
У меня есть 2 текстовых поля и таблица, содержащая ~ 80 тыс. Записей и 7 столбцов.
Когда я набираю что-либо в поле field1, в таблице производится поиск содержимого поля field1. Допустим, я ввел «a» в поле field1, а затем запрос на выборку возвращает все записи, содержащие букву «a» в column1. Итак, таблица ищется, как только я набираю буквы.
До сих пор проблем нет. Его возвращение записей без каких-либо задержек. Запрос:
SELECT DISTINCT <COL1> COLLATE NOCASE as <COL1> from <TABLE_NAME> where <COL1> like '%ab%' LIMIT 0,501
Теперь, если я нажму на поле 2, то через 1 секунду я увижу курсор на поле 2, когда этот запрос будет выполнен:
SELECT DISTINCT <COL2> COLLATE NOCASE as <COL2> from <TABLE_NAME> where <COL1> like '%ab%' LIMIT 0,501
Теперь процесс извлечения базы данных занимает время, если я что-то наберу в поле2. Вот последний запрос:
SELECT DISTINCT <COL2> COLLATE NOCASE as <COL2> from <TABLE_NAME> where <COL1> like '%ab%' AND <COL2> like '%cd%' LIMIT 0,501
Когда я попытался проанализировать проблему, я узнал, что проблема связана с ключевым словом DISTINCT.
Я создал индексы для столбцов следующим образом:
CREATE INDEX <name1> on <TABLE_NAME>(<COL1>)
CREATE INDEX <name2> on <TABLE_NAME>(<COL1> COLLATE CASE)
CREATE INDEX <name3> on <TABLE_NAME>(<COL2>)
CREATE INDEX <name4> on <TABLE_NAME>(<COL2> COLLATE CASE)
Любой знает, как сделать этот поиск быстрым.