Укажите время ожидания SELECT для SQLITE - PullRequest
6 голосов
/ 05 декабря 2011

Можно ли указать максимальное количество времени, которое запрос SELECT может занять с SQLITE?

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

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

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

1 Ответ

1 голос
/ 05 декабря 2011

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

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

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