|
|
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Добрый день. Написал вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. Соответственно не нравится, что несколько раз повторяется этот код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Подскажите пожалуйста, как можно оптимизировать этот момент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 22:18:39 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Не вижу насколько точно повторяется этот фрагмент. Если повторяется абсолютно точно за исключением констант для поля meta_key, то их можно убрать внутрь этого фрагмента: Код: sql 1. 2. 3. 4. 5. И сделать с этим фрагментом декартово произведение. И, кстати, не надо использовать UNION, где правильнее и логичнее использовать UNION ALL. Т.к. просто UNION значительно более трудоемок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 22:42:50 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
>> Если повторяется абсолютно точно за исключением констант для поля meta_key, то их можно убрать внутрь этого фрагмента: Нет, отличаются не только значениями поля meta_key, но и значениями поля meta_value, которые берутся так-же из этого фрагмента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 22:54:51 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Nezhnayka>> Если повторяется абсолютно точно за исключением констант для поля meta_key, то их можно убрать внутрь этого фрагмента: Нет, отличаются не только значениями поля meta_key, но и значениями поля meta_value, которые берутся так-же из этого фрагмента.А, ну это несложно поправить: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 23:04:00 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Вроде понятно, а можете показать, как полностью это должно выглядеть? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 23:22:42 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Вроде сделал, так должно быть видимо: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Еще раз спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 23:49:34 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Nezhnayka, Еще попробуйте подзапрос с тремя константами не прятать так глубоко, а приджойнить уже после UNION ALL. Не могу сходу сказать как будет быстрее. Еще непонятно - o1.id IS NOT NULL AND o2.id IS NOT NULL не сочетается с LEFT JOIN этих таблиц. Либо условие лишнее, либо слово LEFT лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 00:03:20 |
|
||
|
Оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
miksoftЕще попробуйте подзапрос с тремя константами не прятать так глубоко, а приджойнить уже после UNION ALL. ок, попробую, но уже наверное завтра. miksoftЕще непонятно - o1.id IS NOT NULL AND o2.id IS NOT NULL не сочетается с LEFT JOIN этих таблиц. Либо условие лишнее, либо слово LEFT лишнее. Да, все верно, LEFT лишнее, на быструю руку крутил это запрос, очень сырой выложил, потому что сразу задумался над вопросом, который здесь решали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 00:21:20 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38794074&tid=1833998]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 357ms |

| 0 / 0 |
