|
|
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть долго выполняющийся запрос. Подскажите что можно сделать для его оптимизации. Собственно сам запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. EXPLAIN по запросу выдает следующие данные: id"select_type""table""type""possible_keys""key""key_len""ref""rows""Extra" 1"SIMPLE""company_t""ALL""PRIMARYid_company"nullnullnull"1756""Using where Using temporary Using filesort"1"SIMPLE""class_union""ref""id_company""id_company""4""society.company_t.id_company""7""Using where" 1"SIMPLE""class_okdp_t""eq_ref""UK_class_okdp_RN""UK_class_okdp_RN""4""society.class_union.rn""1""Using where" 1"SIMPLE""class_user""eq_ref""PRIMARY""PRIMARY""4""society.class_union.id_class_user""1""Using index" 1"SIMPLE""class_user_pk""ALL""UK_class_user_pk_id_class"nullnullnull"102""Using where Using join buffer (Block Nested Loop)" 1"SIMPLE""class_okdp_t""eq_ref""UK_class_okdp_RN""UK_class_okdp_RN""4""society.class_user_pk.id_class""1""Using where" 1"SIMPLE""class_okdp_t""ALL"nullnullnullnull"45750""Using where Using join buffer (Block Nested Loop)" 1"SIMPLE""class_union""ref""rn""rn""5""society.class_okdp_t.RN""1""Using where" 1"SIMPLE""cup3""ref""IDX_company_user_part_id_userIDX_company_user_part_id_company""IDX_company_user_part_id_user""4""society.class_union.id_user""12""Using where" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 18:02:27 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
VladimirFl, что-то не сочетается список полей в SELECT и в GROUP BY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 18:56:38 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoft, да, точно. здесь не все поля в селекте указал. Со всеми полями в селекте не легче... запрос выполняется 15 сек. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 20:56:33 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
VladimirFlСо всеми полями в селекте не легче...Для начала должно стать не "легче", а правильно. Неправильный запрос оптимизировать бессмысленно. VladimirFl Код: sql 1. 2. 3. Вы в курсе, что в таком случае значение поля class_union.rn может взяться из любой записи в пределах группы? Причем даже из разных от раза к разу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 21:07:25 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoft, а.. вы в этом смысле. да.. я в курсе. там немного просто упростил запрос вот он целиком Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 21:42:55 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
VladimirFlmiksoft, а.. вы в этом смысле. да.. я в курсе. там немного просто упростил запрос вот он целиком но мне пофиг Код: 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. Или всё выделенное жёлтым однозначно определяется полями группировки? PS. Не пойму, какой смысл выбирать вот так "cwc.id_company AS gt", а потом группировать вот так "GROUP BY cwc.id_company,gt"? Два раза группируете по одному и тому же значению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 05:03:35 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Я что-то понятно не могу. У вас план не соответствует запросу. Покажите план на полный запрос без всяких автортам немного просто упростил запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 07:20:57 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
"понятно" = "понять" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 07:21:35 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
JeStone, Это да. План не соответствует ни одному варианту запроса тут... Но, тем не менее, он правильно показывает, что все левые джойны с лайками - не используют индексов. Это первое место торможения... то что сама группировка вызывает вопросы, это уже второй момент... ну и корректность выборок при такой группировке - уже совсем на совести автора. Избавьтесь от лайков в условиях соединений. Это первое. Как? сильно зависит от вашей БД. По крайней мере, в части выборки ключей юзверя - может быть полезным создание таблицы групп ключей и двойной джойн с нею... зато выборка пойдет по индексам, а не лайкам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 07:33:00 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
И избавьтесь от смеси французского с нижегородским (перепишите неявные джойны на явные) - читать очень неудобно, особенно секцию where. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 07:47:01 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
ибудтобы я удивился, что запрос медленно работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 11:10:54 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Arhat109JeStone, то что сама группировка вызывает вопросы, это уже второй момент... ну и корректность выборок при такой группировке - уже совсем на совести автора.. когда уже mysql придушат за такие вольности ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 21:58:28 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
NikolayV81, Никогда. Это иногда даже полезно. Проблема как всегда не в плохом инструменте, который разрешает что-то лишнее, а в кривых ручках. Ибо, как известно, при определенной сноровке можно и "прибор" сломать. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 06:37:54 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Проблема исключительно в том, что это разрешено по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 08:23:21 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
tanglirПроблема исключительно в том, что это разрешено по умолчанию. А второе за что его надо придушить, так это за зависимость результата одного и того-же запроса от настроек сервера :) Arhat109, Потому и называется MySQL наверное... в стандарте для таких вещей есть gerouping sets ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 08:59:43 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
NikolayV81, Вопрос терминологии. Но, в целом я согласен и с вами и с tanglir-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 09:36:09 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
NikolayV81зависимость результата одного и того-же запроса от настроек сервераА разве это не у любого сервера так? В Оракле такое точно есть. Одни только неявные преобразования типов данных сколько крови попили у новичков... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 10:42:28 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoftNikolayV81зависимость результата одного и того-же запроса от настроек сервераА разве это не у любого сервера так? В Оракле такое точно есть. Одни только неявные преобразования типов данных сколько крови попили у новичков... ораклы увы такой-же набор пережитков прошлого, котрые нужны для совместимости ( да и контора увы одна ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 10:47:34 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
NikolayV81ораклы увы такой-же набор пережитков прошлого, котрые нужны для совместимостия бы не сказал, что NLS-параметры нужны только для совместимости. NikolayV81( да и контора увы одна )А это тут вообще не причем, контора одна стала совсем недавно, все или почти все настройки, влияющие на результат, были внесены до того в оба продукта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 10:52:27 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoftNikolayV81ораклы увы такой-же набор пережитков прошлого, котрые нужны для совместимостия бы не сказал, что NLS-параметры нужны только для совместимости. Когда первый раз увидел сообщение про параметры подключения в PL/SQLDeveloper, когда начинал с Оракл, долго втыкал в текст, и думал что я идиот ( вот зачем драйверу куда-то лезть куда его не просят? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 10:59:04 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoft, Specifies conventions such as the language used for Oracle messages , sorting , day names, and month names. Each supported language has a unique name; for example, AMERICAN , FRENCH , or GERMAN . The language argument specifies default values for the territory and character set arguments. If the language is not specified, then the value defaults to AMERICAN . А из-за этого приходиться иногда наблюдать забавные переводы ошибок ;), с другой стороны какое отношение сортировка имеет к настройкам пользовательсткого компа? ИМХО это должно быть в строке подключения, если про клиентскую часть, нет в строке, должно быть по дефолту, дефолт должен быть задан либо на сервере либо вобще как глобальное умолчание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 11:08:46 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
NikolayV81какое отношение сортировка имеет к настройкам пользовательсткого компак настройкам пользовательского компа, может, и никакого, а вот к настройкам сервера - самое прямое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 11:23:27 |
|
||
|
Долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoftNikolayV81какое отношение сортировка имеет к настройкам пользовательсткого компак настройкам пользовательского компа, может, и никакого, а вот к настройкам сервера - самое прямое. так в том то и фишка, настройки компа/сервера и прочее это совсем из другой серии, для сортировок есть charset-ы и прочее, что задаётся при создании таблиц, схем, баз, да чего угодно. При этом не должно ( на мой взгляд ) быть такого что date = "01.01.2001" на одном клиенте работает, на другом нет, эти вроде как упрощения для разработчиков заканчиваются в итоге проблемами. Баз на сервере ( клиентов на десктопе ) может быть куча, с разными настройками, понимаю конечно что написание даты в стиле to_date ( "", "yyyy-..." ) в оракле может быть привычкой ( с учётом того что и там нестандартных на мой взгляд литералов напихали ), но ... Вообще это конечно к проектированию СУБД больше относится, одно оракловое varchar2 чего стоит, а там ещё отсуствие on update cascade, с весёлыми ответами идеолога в стиле "вы ничего не понимаете, и то что вам нужно вам на самом деле не нужно"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2014, 12:11:52 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38843490&tid=1833755]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 489ms |

| 0 / 0 |
