Он чувствует себя довольно просто в чем угодно, кроме MySQL.IF Условие Выполнение запроса, другое Выполнение другого запроса
В основном мне нужно переключить какой тип индекса я использую вместе с несколькими другими условиями, основанными на том, сколько результатов возвращает определенный термин.
Что-то эффект:
IF (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
EXECUTE QUERY A
ELSE
EXECUTE QUERY B
Возможно ли это в заявлении MySQL?
РЕДАКТИРОВАТЬ:
Запрос А:
SELECT id
FROM table_a
FORCE INDEX(id)
JOIN table_b ON table_a.id = table_b.id
WHERE term LIKE "term"
ORDER BY date
LIMIT 100;
Запрос Б:
SELECT id
FROM table_a
FORCE INDEX(term)
JOIN table_b ON table_a.id = table_b.id
WHERE term LIKE "term"
GROUP BY term # These lines would be included for a few conditions not mentioned above.. but are necessary
HAVING COUNT = 1 # same...
ORDER BY date
LIMIT 100;
Причина переключателя запроса я получаю совершенно разные времена результата, основанные на популярность «термина».
Что такое 'QUERY A' и' QUERY B'? SQL обычно разрешает эту ситуацию обрабатывать с помощью объявления 'WHERE', но мы не можем сказать, если мы не знаем, связаны ли A & B. –
... В противном случае MySQL допускает использование логики управления потоком в функциях, триггерах и хранимых процедурах, а не в обычных запросах. –
В теории - да (с помощью оператора 'CASE' и объединения), но это зависит от того, совпадает ли количество полей и записей в обоих запросах.Вы должны отправить эти два вместе с тестовыми данными, чтобы мы могли ответить. –