Быстрый поиск строк в QSqlTableModel и SQLite

Я использую SQLite 3.x, Qt 5.7, C ++, QSqlTableModel, QTableView классы. Стол sites содержит уникальный url колонка. Я хотел бы избежать избыточных выборок и минимизировать / исключить полный сброс моей модели в случае небольших изменений данных. Поэтому я предпочитаю использовать необработанные запросы SQL только для чтения и писать через QSqlRecord в этом проекте. Я обновляю строку в модели путем изменения соответствующего QSqlRecord пример. Но я должен выполнить линейный поиск записи для обновления (см. Псевдокод ниже):

for (int i = 0; i < rowCount(); ++i)
{
QSqlRecord current_record = record(i);
QString current_url = current_record.value("url").toString();
if (current_url == url)
{
//updates...
break;
}
}

Я хотел бы использовать внутренние средства SQLite для более быстрого поиска. Как я могу найти правильный идентификатор (назовем его found_id) в SQLite для того, чтобы позвонить QSqlRecord record = row(found_id);? Обратите внимание, что вставки и удаления также будут использоваться.

Вот упрощенный DDL:

CREATE TABLE sites (
id                 INTEGER PRIMARY KEY,
url                VARCHAR UNIQUE NOT NULL
);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]