Запрос:
SELECT a FROM table1 WHERE b IN (SELECT b FROM table1 WHERE c = 2);
Если подзапрос возвращает ноль результатов, mysql требуется много времени для его реализации, прежде чем он, наконец, возвращает пустой результат.(2,5 с, когда подзапрос пуст, 0,0005 с, когда есть результат подзапроса).
Мой вопрос: есть ли способ изменить запрос так, чтобы он все равно возвращал пустой результат, но занимал бы то же время, что иэто было, когда был результат?
Я пытался:
SELECT a FROM table1 WHERE b IN ((SELECT b FROM table1 WHERE c = 2), 555);
... но это работает только тогда, когда подзапрос пуст.Если есть результат, запрос не выполняется.
- Я не хочу менять формат запроса с вложенного на присоединение / и т.д.
Идеи ..?Спасибо!
- РЕДАКТИРОВАТЬ: Кроме того, я забыл добавить: подзапрос, скорее всего, приведет к списку результатов приличного размера, а не к одному результату.--- ТАКЖЕ, когда я набираю '555', я имею в виду значение, которое никогда не будет существовать в столбце.
- РЕДАКТИРОВАТЬ 2: Я также пробовал следующий запрос, и он "работает", но онпо-прежнему занимает на несколько порядков больше, чем исходный запрос, если он имеет результаты:
SELECT a FROM table1 WHERE b IN (SELECT 555 AS b UNION SELECT b FROM table1 WHERE c = 2);