@beduin01

Почему запрос выполняется в 10 раз дольше?

Случайно опечатался и вместо:
SELECT * FROM files WHERE parsing_status IS NULL
получилось:
SELECT * FROM files WHERE  parsing_status IS NULL AND parsing_status IS NULL

В результате вместо 1 секунды запрос отработал в 10 раз дольше.

Сам запрос немного сложнее чем указанный, но суть была именно в дублировании указанного поля. Как такое может быть? Хотя бы теоретически?
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 3
@igaraev
Надо смотреть план запроса.
Ответ написан
Комментировать
@WaterSmith
Android-разработчик. Java, Kotlin
Только предположение:
Похоже что делается декартово произведение таблицы files, как будто вы соединили таблицу саму с собой без условия. В результате выборка происходит по квадрату количества записей, т.е. вместо 10 записей будет обработано 100 а вместо 1000 - 1000000.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Рискну предположить что упрощизм опечатки прячет важные детали.
Все-таки стоит привести образцы двух полных запросов (ну и следом видимо структуру таблиц-индексов)

Естественно в случае что повторяемость эксперимента присутствует - 10 раз из 10 в любом порядке соотношение времени выполнения сохраняется.

И само собой после сравнения планов выполнения этих запросов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы