Я использую диванную базу: сообщество-6.0.0 в своем приложении Spring. У меня около 250 000 записей в базе данных. Мой запрос к базе данных работает очень быстро без использования команды запроса COUNT.
SELECT app.*, META(app).id AS id FROM app WHERE ( deleted = FALSE OR
deleted IS MISSING ) AND _class =
“com.myexample.app.device.data.model.DeviceEntity” AND appId =
“something” AND dp.language = “somelanguage” LIMIT 100 OFFSET 0
Этот запрос работает очень хорошо и быстро… Время отклика менее 50 мс.
Однако
SELECT COUNT(*) AS count FROM app WHERE ( deleted = FALSE OR deleted
IS MISSING ) AND _class =
“com.myexample.app.device.data.model.DeviceEntity” AND appId =
“something”
Это занимает 1 минуту. не могу уменьшить.
Индексы
начальный
СОЗДАТЬ ИНДЕКС class_appId_idx
ВКЛ app
(_class
,appId
)
СОЗДАТЬ ИНДЕКС ix1
ВКЛ app
(_class
,appId
,если отсутствует(deleted
, ложь))
Каково решение этого? Я думаю, индекс не работает со счетчиком? Любые советы, пожалуйста, как я могу этого добиться?
Примечание. Пробовал с EE edition, не работает.
deleted
= false) или (deleted
отсутствует)) AND _class = com.myexample.appconnect.device.data.model.DeviceEntity ANDappId
= something; :/ Я фактически удалил весь индекс, включая первичный. 20.12.2018SELECT COUNT(*) AS count FROM test WHERE IFMISSING(deleted, false) = false AND _class = "com.myexample.app.device.data.model.DeviceEntity" AND appId = "something"
и использовать такой индекс:create index ix_test_im on test(_class, appId, IFMISSING(deleted, false))
20.12.2018