Самый быстрый способ найти ненулевое поле в sqlite - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть таблица sqlite

CREATE TABLE IF NOT EXISTS [app_status](
[id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
[status] TEXT DEFAULT NULL
) 

В этой таблице несколько записей, например

1 "success"
2 NULL

, где NULL - это sqlite NULL

Какой самый быстрый способ найтиесли в таблице хотя бы одна строка где статус IS NOT NULL?Могу ли я создать какой-то индекс или что-то еще, что я могу использовать для подсчета полей, отличных от NULL?

Я написал следующий запрос

SELECT 1 \
FROM [app_status]\
WHERE [status] IS NOT NULL

Но это занимает от 3 мс до 50 мс.Я хочу дополнительно оптимизировать это время.Как я могу это сделать?

1 Ответ

1 голос
/ 28 февраля 2012

Добавьте индекс к этому столбцу, если у него его еще нет, и / или ограничьте свой выбор.

select 1 from [app_status] where [status] is not null limit 1;

Вам не нужно просматривать всю таблицу, если вы простопроверка, содержит ли столбец хотя бы одно ненулевое поле.

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