Я использую диванную базу: сообщество-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