У меня есть несколько таблиц с булевым столбцом, например. активный столбец, чтобы указать, является ли активным пользователем или нет, а затем запросить все неактивный пользователь я используюэффективность запроса для булевой записи
select * from users where active = 0
Большинство моих пользователей активны. Я понимаю, что без помощи запроса необходимо проверить каждую запись, что является низкой эффективностью и довольно медленным в моем случае. У меня есть другая таблица с булевым столбцом, скажем, обработанный столбцом для записи, были ли обработали заказы или нет, и запросить все необработанные заказы,
select * from orders where processed = 0
Я рассматриваю добавление помощника таблицы для записи этих неактивных пользователей и необработанных заказов например,
CREATE TABLE IF NOT EXISTS failedRecord (tablename text, row integer) ; //row will be rowid
Мне действительно не нравится это самодельное решение. Я предпочту использовать базу данных решений, но я не уверен, поможет ли использование индекса в булевом столбце или нет. B/C Я считаю, что индексы реализуются путем создания отдельной таблицы индексов, которая отображает ключ, созданный из столбца, в индекс строки в индексированной таблице. Для логического столбца, поскольку значение может быть только 0 или 1, я думал, что отображение не будет эффективным.
Я использую sqlite, но я предполагаю, что другая база данных также будет иметь проблему.
Обновлен мой вопрос.
Большинство моих пользователей являются активными, и большинство заказов обрабатываются, то есть в моем случае здесь только несколько строк равны 0, поэтому после того, как второй мыслительный индекс может быть эффективным. Это так?
Если вам нужно получить доступ к булевым объектам так интенсивно, как загружать их все как значения bool, например отсортированный ArrayList, при запуске. Таким образом, у вас есть кэш памяти. И только при необходимости обновляйте базу данных. – cshu
Вот что Я делаю, но я прошу любой эффективный способ «загрузить все из них». Спасибо – Qiulang