select * from q_and_a qa
where keyword = :keyword_top
or id in (
select qk.question_id
from question_keywords qk
inner join q_and_a qa on qa.id = qk.question_id
inner join keywords k on k.id = qk.keyword_id
where k.keyword = :keyword_bottom
)
-3
A
ответ
0
Если я понять Ваш запрос правильно, вам не нужно подзапрос, а outer joins
:
select q.*
from q_and_a q
left join question_keywords qk on q.id = kq.question_id
left join keywords k on k.id = gk.keyword_id
where q.keyword = :keyword_top or
k.keyword = :keyword_bottom
Вам может понадобиться использовать distinct
с этим, зависит от данных образцов и желаемых результатов ,
Фактически, поскольку это действительно вопрос о производительности, это может ускорить или не ускорить его. Как обычно, это просто зависит.
Пара других вариантов вашего существующего запроса будет включать использование exists
или использование union all
вместо or
. Вы должны выполнить сравнения, чтобы увидеть, что лучше всего работает в вашей ситуации. Также необходимо правильно определить ваши индексы и ключи.
0
Это могло бы быть чище для SQL-движка сделать это как левое соединение, а не делать подзапрос.
SELECT qa.*
FROM q_and_a qa
LEFT JOIN question_keywords qk
ON qa.id = qk.question_id
LEFT JOIN keywords k
ON k.id = qk.keyword_id
WHERE qa.keyword = :keyword_top
OR k.keyword = :keyword_bottom
Смежные вопросы
- 1. Есть ли способ сделать этот фрагмент кода более эффективным?
- 2. Есть ли способ сделать этот код более эффективным?
- 3. есть ли более быстрый способ сделать этот запрос mysql?
- 4. Есть ли способ сделать это более эффективным?
- 5. Как сделать этот личный лучший запрос MySQL MySQL более эффективным?
- 6. сделать запрос более эффективным
- 7. Как сделать этот запрос более эффективным?
- 8. Как сделать этот дополнительный запрос более эффективным?
- 9. Способ сделать этот HashMap более эффективным
- 10. Как сделать этот SQL-запрос более эффективным?
- 11. Как сделать этот поисковый запрос более эффективным?
- 12. Как сделать этот SQL-запрос более эффективным?
- 13. Как сделать этот запрос таблицы более эффективным
- 14. Как сделать этот запрос удаления более эффективным в MySQL?
- 15. Сделайте этот запрос более эффективным
- 16. Может ли EXISTS сделать этот запрос более эффективным?
- 17. Могу ли я сделать этот SQL-запрос более эффективным?
- 18. Сделать запрос более эффективным
- 19. Может ли этот запрос MySQL быть более эффективным?
- 20. Как сделать MySQL более эффективным?
- 21. Есть ли более быстрый способ выполнить этот запрос mysql?
- 22. Необходимо сделать запрос более эффективным
- 23. Сделать этот алгоритм более эффективным
- 24. Сделать этот код более эффективным
- 25. Есть ли способ оптимизировать этот запрос mysql ...?
- 26. Сделать этот поиск ActiveRecord более эффективным
- 27. Сделать запрос GROUP_CONCAT более эффективным
- 28. Сделать мой запрос более эффективным
- 29. Есть ли способ минимизировать этот запрос mysql?
- 30. Есть ли лучший способ сделать этот запрос?
Вопросы по настройке запросов часто встречаются здесь, и вы должны прочитать некоторые из них. И комментарии. Затем вернитесь и задайте вопрос правильно. – symcbean