|
|
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Прошу помочь с запросом из-за которого сильно грузится процессор. SHOW FULL PROCESSLIST показывает для него состояние "Copying to tmp table" Сам запрос (сильно не ругайте). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. EXPLAIN в приложении Профилирование авторstarting 0.000039 checking query cache for query 0.000169 Opening tables 0.000106 System lock 0.000039 Table lock 0.000154 optimizing 0.000018 statistics 0.000028 preparing 0.000030 executing 0.000027 Sorting result 0.000021 Sending data 0.000973 optimizing 0.000025 statistics 0.000031 preparing 0.000026 executing 0.000024 Sorting result 0.000022 Sending data 0.018629 init 0.000231 optimizing 0.000040 statistics 0.000599 preparing 0.000054 Creating tmp table 0.000189 executing 0.000022 Copying to tmp table 0.879500 Sorting result 0.000135 Sending data 0.000257 end 0.000021 removing tmp table 0.000093 end 0.000020 query end 0.000017 freeing items 0.002168 removing tmp table 0.000029 closing tables 0.000015 removing tmp table 0.000019 closing tables 0.000036 logging slow query 0.000014 cleaning up 0.000022 Заранее спасибо за ответ, без оскорблений) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 20:22 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
fourtyЗаранее спасибо за ответ, без оскорбленийНу вообще-то надо бы... Кто мешал вменяемо отформатировать код? ни хрена ж структуры запроса не видать... Кто мешал ВСЕМ полям в запросе проставить алиасы таблиц? или хотя бы DDL таблиц показать? догадывайся теперь, где, в какой таблице, находятся поля delReason или там packet... По сути ПОКА можно сказать лишь одно - поскольку в условиях отбора есть условие по таблице specs, то эту таблицу следует связывать INNER JOIN, а не LEFT - всё одно вырождается, а серверу работы меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 07:38 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
Согласен. Не читабельно. + а "загрузка " зависит от количества выбираемых полей? Может стоит попробовать по максисмуму сократить синтаксис. Либо на этапе сокращения найдешь тормознутый элемент, либо приведешь запрос к читаемому виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 08:40 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
982183"загрузка " зависит от количества выбираемых полей?Только в случае, если при небольшом количестве полей используется покрывающий индекс, а при большом идёт извлечение из таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 08:49 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
fourty, с учетом LIMIT-а напрашивается изменение структуры запроса. Предлагаю изначально выбрать ТОП 30 "вузов", после чего - прикрутить к ним opinions и specs. Но рассчитывать их только для выбранной тридцатки, посредством коррелированного скалярного подзапроса в списке SELECT, а не в деривед-табле и для всех "вузов" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 08:52 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
не все поля запроса входят в аггрегаты или group by ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 11:01 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 16:16 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 16:20 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
скорее всего тут надо менять местами автор Код: sql 1. ибо subj_id оставит сколько, 1 строчку? а delReason="" сколько там? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 19:31 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
count(*) - штука дорогая, тем более по всей таблице может агрегировать надо или кешить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 19:38 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
Большое спасибо всем за ответы. Последний запрос работает гораздо быстрее. Осталось понять как получить общее количество строк (не учитывая LIMIT). Для генерации количества кнопок пейджинга. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 02:02 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
fourtyкак получить общее количество строк (не учитывая LIMIT).SQL_CALC_FOUND_ROWS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 07:37 |
|
||
|
Помогите с запросом (тормозит)
|
|||
|---|---|---|---|
|
#18+
Akina, К сожалению, здесь это не сработает, LIMIT во вложенном запросе, результат будет всегда равен количеству выбранных срок в рамках LIMIT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39669768&tid=1829746]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
151ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 455ms |

| 0 / 0 |
