Укажите время ожидания SELECT для SQLITE

Можно ли указать максимальный период времени, который может выполнить запрос SELECT с помощью SQLITE?

Ситуация была бы полезна там, где у вас большие таблицы, и пользователи должны иметь возможность вводить бесплатные условия поиска. Если поиск найденных терминов быстро не найден, вся таблица сканируется, что может занять очень много времени, поскольку индексы обычно не могут использоваться.

Поэтому, если SQLITE откажется после нескольких секунд, это будет полезно.

Я использую SQLITE через System.Data.Sqlite, и казалось, что SqliteCommand.CommandTimeout будет тем, что я хочу, но настройка по-видимому не имеет никакого эффекта по какой-либо причине. Возможно, я что-то упустил.

Для простого запроса выбора нет, похоже, не существует способа установить тайм-аут или максимальное время выполнения на самом SQLite. Единственное упоминание тайм-аута в документации – это таймаут занятости . Таким образом, если вам нужно ограничить максимальный период времени, который может выбрать запрос выбора, вам нужно будет связать ваше соединение с тайм-аутом на уровне приложения и отменить / закрыть ваше соединение, если этот таймаут будет превышен. Как это сделать, очевидно, будет специфичным для приложения / языка.

Для таймаута занятости (таймаут до того, как соединение перестает ждать блокировки для очистки) вы можете сделать это через предоставленный интерфейс C или через драйвер SQLite, предоставленный вашему приложению.