|
|
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#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. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. Сам запрос просто, и выводит топики от сообщений (где есть дата, заголовк и id двух людей кто участвует в разговоре) Но вот что получить все данные, получается много подзапросов, чтобы определить какой пользователь из какой таблицы, и какой пользователь текущий а какой оппонент + получить по ним доп инфу Скажите можно ли что-то придумать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 23:16:07 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11 Код: sql 1. 2. 3. Это что за кошмар? Почем не просто Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 23:25:11 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11 Код: sql 1. Разделите запрос на две части отдельно для каждого случая, а потом объедините их с помощью UNION ALL. Подозреваю, что итоговая конструкция станет сильно проще и быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 23:27:55 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Тут ситаация такая что есть два вида пользвоателей Организации и владельцы (CASE (SELECT COUNT(*) FROM `owners` WHERE `id` = `opponent_1_id`) WHEN 1 THEN (SELECT `sex` FROM `owners` WHERE id = `opponent_1_id`) END), так вот у владельцев есть в своей таблице поле пол а у организаций нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 23:36:12 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Еще нюанс, мы заранее не знаем, кто из этих пользователей написал и кому написали. И заранее не знаем тип этого пользователя, чтобы выбрать его имя из таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 23:37:56 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11Тут ситаация такая что есть два вида пользвоателей Организации и владельцы (CASE (SELECT COUNT(*) FROM `owners` WHERE `id` = `opponent_1_id`) WHEN 1 THEN (SELECT `sex` FROM `owners` WHERE id = `opponent_1_id`) END), так вот у владельцев есть в своей таблице поле пол а у организаций нетНу и что? В переводе на русский у вас в запрос написано "если выбирается одна запись, то выбираем поле из этой записи". Зачем так писать? Почему не сразу "Выбираем поле из нужной записи". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 23:49:25 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
miksoft, Ну это понятно, если я исправлю особо ничего не изменит логика корявая, куча подзапросов. Скажите а можно ли как-то так Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 00:00:25 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11, С одной таблицей в inner join получается ) и нет никаких подзапросов. Но тут весь вопрос, что надо выбирать из какой таблицы делать inner join, если владелец из owner и если организаиця то из companies ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 00:18:01 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11, можно как-то так. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 06:01:15 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11, разбей на два запроса с union all, у тебя подзапросы тоже пополам пробиться должны. также полагаю некоторые запросы можно превратить в join ы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 12:16:58 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11Еще нюанс, мы заранее не знаем, кто из этих пользователей написал и кому написали. И заранее не знаем тип этого пользователя, чтобы выбрать его имя из таблицы так узнай... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 12:17:41 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11miksoft, Ну это понятно, если я исправлю особо ничего не изменит логика корявая, куча подзапросов. Скажите а можно ли как-то так Код: plsql 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. еще проблема -limit. выбираться все записи, сртируются по дате, потом берется топ X. что бы сразу не задать фильтр по дате? это много важнее всех подзапросов, если ты не понимаешь ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 12:21:08 |
|
||
|
Помогите оптимизировать такой запрос
|
|||
|---|---|---|---|
|
#18+
Питерский11Питерский11, С одной таблицей в inner join получается ) и нет никаких подзапросов. Но тут весь вопрос, что надо выбирать из какой таблицы делать inner join, если владелец из owner и если организаиця то из companies разбей еще на два запроса под union all... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 12:22:07 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39116849&tid=1832438]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 290ms |

| 0 / 0 |
