|
|
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Собственно запрос . Выполняется на MySql 5.6 примерно полторы минуты, что никак не может устраивать. На Microsoft SQL этот же запрос выполняется за 3-4 сек. структура таблиц в прикрепленном файле. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Найденные строки: 1 573 183 Предупреждения: 0 Длительность 2 queries: 00:01:29 (+ 4,875 sec. Network) */ таблица people. 1 574 000 записей, people_polis 2 290 000 записей. Индексы IDLPU, ID присутствуют. explain запроса Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:23:37 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001На Microsoft SQL этот же запрос выполняется за 3-4 сек. MS SQL откажется выполнять этот запрос по SQL Error (8120). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:32:26 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Эм... с чего бы ??? Немножко подправил запрос, убрал некоторые поля.. use [statistics]; SELECT distinct people.UNICOD, people.SNILS, people.birthDate, people.SEX, ms.max_Date, people.IDLPU AS IDSubject, people.timeModify FROM dbo.people AS people LEFT JOIN ( SELECT PP.ID, PP.IDLPU, max(PP.sDatePolis) AS max_date FROM dbo.people_polis AS PP,people AS P where PP.ID = P.UNICOD AND PP.IDLPU = P.IDLPU GROUP BY pp.ID, pp.IDLPU) AS ms ON ms.ID = people.UNICOD AND ms.IDLPU = people.IDLPU ************** UNICOD SNILS birthDate SEX max_Date IDSubject timeModify 8 080-114-077 11 1956-07-02 00:00:00.000 1 2013-02-07 00:00:00.000 100 2013-09-11 13:07:31.000 9 063-769-601 95 1953-07-29 00:00:00.000 2 2012-12-19 00:00:00.000 100 2014-01-10 01:15:38.000 11 066-962-116 92 1955-07-23 00:00:00.000 2 2012-09-24 00:00:00.000 100 2014-01-10 01:15:38.000 12 121-237-115 97 1917-08-07 00:00:00.000 2 2007-05-11 00:00:00.000 100 2012-04-26 10:25:34.000 13 078-808-601 09 1927-10-18 00:00:00.000 2 2007-01-04 00:00:00.000 100 2012-04-26 10:25:34.000 14 082-530-211 31 1986-10-17 00:00:00.000 2 2007-10-31 00:00:00.000 100 2014-01-10 01:15:38.000 15 080-165-832 51 1936-07-18 00:00:00.000 2 2012-12-19 00:00:00.000 100 2014-01-10 01:15:38.000 16 063-993-408 99 1951-02-28 00:00:00.000 2 2012-10-25 00:00:00.000 100 2014-01-10 01:15:38.000 17 120-962-474 46 1935-02-08 00:00:00.000 1 2012-11-22 00:00:00.000 100 2014-01-10 01:15:38.000 20 098-069-503 10 1946-05-17 00:00:00.000 2 2007-02-22 00:00:00.000 100 2014-01-10 01:15:38.000 21 099-169-640 31 1984-04-17 00:00:00.000 1 2012-05-14 00:00:00.000 100 2014-01-10 01:15:38.000 22 NULL 1988-09-11 00:00:00.000 1 2008-07-15 00:00:00.000 100 2012-04-26 10:25:34.000 ***3 411 006 строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:41:00 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001, PP.ID уникальное поле? Если да, то зачем от поля PP.sDatePolis брать максимум, ведь в группе будет всего одна запись? Если нет, то, надеюсь, что вы осознаете, что поля PP.idPayer,PP.NUMBERPOLIS, PP.IDDOCUM, PP.SERIAPOLIS, PP.eDatePolis будут взяты из произвольной записи таблицы people_polis в пределах группы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:41:22 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
miksoftDmitriy001, PP.ID уникальное поле? Если да, то зачем от поля PP.sDatePolis брать максимум, ведь в группе будет всего одна запись? Если нет, то, надеюсь, что вы осознаете, что поля PP.idPayer,PP.NUMBERPOLIS, PP.IDDOCUM, PP.SERIAPOLIS, PP.eDatePolis будут взяты из произвольной записи таблицы people_polis в пределах группы ? PP.ID нет, не уникальное. В таблице people_polis могут могут быть несколько полисов, нужно найти самый свежий ив выдать его ... авторPP.idPayer,PP.NUMBERPOLIS, PP.IDDOCUM, PP.SERIAPOLIS, PP.eDatePolis будут взяты из произвольной записи таблицы people_polis в пределах группы ? Извините, я не так давно столкнулся с запросами,...если честно, то не понятно почему произвольный. На MS SQL писал запрос не я, он на самом деле довольно большой, есть еще куча join-ов. Там все написано в одной View, а MySql (View) не позволяет вложенные запросы, поэтому приходится переделывать все в обычный запрос, вот и возникла беда с временем выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:51:19 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001Эм... с чего бы ???С того, что Вы не запускали именно этот запрос на MS SQL, и вообще SQL пока не Ваш конёк - иначе бы Вы не задавали такого [censored] вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:51:36 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
AkinaDmitriy001Эм... с чего бы ???С того, что Вы не запускали именно этот запрос на MS SQL, и вообще SQL пока не Ваш конёк - иначе бы Вы не задавали такого [censored] вопроса. Что ж Вы так грубо ??? )) То что не мой конек -не спорю. А вот, то, что именно этот запрос - извольте принтскрин глянуть (в файле приложенном) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 15:05:42 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001MySql (View) не позволяет вложенные запросыОформи их как вьюшки: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 15:07:00 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001А вот, то, что именно этот запрос - извольте принтскрин глянуть (в файле приложенном) Ну не стройте из себя дурака-то! То, что MS SQL даст ошибку, говорилось про запрос из начального поста. А тот запрос, скрин которого Вы сейчас приводите, на тот момент в теме ещё даже не появился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 15:10:47 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001В таблице people_polis могут могут быть несколько полисов, нужно найти самый свежий ив выдать его FAQ: Выборка первой/последней записи в группах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 15:14:30 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Akina, Сначала и пытался делать методом объединения двух View. Но, говорят, View в MySQL не использует индексы, поэтому наверное и результат - 5 мин. 40 сек. Поэтому и пытаюсь сделать одним запросом. explain 1 PRIMARY <derived2> ALL 10 2 DERIVED people ALL 1574650 Using temporary 2 DERIVED people_work ref id,idlpu id 4 statistics.people.unicod 3 Using where; Distinct 2 DERIVED people_sadr ref id,idlpu id 4 statistics.people.unicod 3 Using where; Distinct 2 DERIVED people_document ref id,idlpu id 4 statistics.people.unicod 3 Using where; Distinct 2 DERIVED people_polis ref id,idlpu id 4 statistics.people.unicod 4 Using where; Distinct 2 DERIVED <derived3> ref <auto_key0> <auto_key0> 9 statistics.people.unicod,statistics.people.idlpu 10 Distinct 3 DERIVED ss ALL 2289687 Using temporary; Using filesort miksoft спасибо, щас буду "понимать" ;( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 15:33:50 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Dmitriy001говорят, View в MySQL не использует индексы Вьюв - использует. А вот его результаты при использовании во внешнем запросе - нет. Тупо потому, что их самих, индексов то есть, нету... Я думаю, Вы делаете типичную ошибку, описанную тут . Посему предлагаю всё похерить и начать с нуля - выкладывайте DDL и формулируйте постановку задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 16:53:07 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
AkinaDmitriy001говорят, View в MySQL не использует индексы Вьюв - использует. А вот его результаты при использовании во внешнем запросе - нет. Тупо потому, что их самих, индексов то есть, нету... Я думаю, Вы делаете типичную ошибку, описанную тут . Посему предлагаю всё похерить и начать с нуля - выкладывайте DDL и формулируйте постановку задачи. Чтож....не знаю что такое DDL, а постановка - сделать, чтоб заработал запрос на MYsql хотябы секунд за 10 (( SELECT DISTINCT people.UNICOD, people.SNILS, dbo.people_document.NAME, dbo.people_document.FAM, dbo.people_document.IM, dbo.people_document.OTCH, dbo.people_document.TYPEPPL, dbo.people_document.BPLACE, people.birthDate, people.SEX, pp.IDPAYER, pp.NUMBERPOLIS, pp.IDDOCUM, pp.SERIAPOLIS, pp.sDatePolis, pp.eDatePolis, dbo.people_document.IDDOCUMENT, dbo.people_document.NUMBER, dbo.people_document.SERIA, dbo.people_document.WHOOUT, dbo.people_document.sDateDoc, dbo.people_sadr.IDGEO, dbo.people_sadr.SADDRESS, dbo.people_sadr.VILLAGE, dbo.people_sadr.OUTREGION, dbo.people_sadr.OUTCOUNTRY, dbo.people_sadr.HOME, dbo.people_sadr.BODY, dbo.people_sadr.FLAT, dbo.people_sadr.CODOKATO, dbo.people_sadr.NAMEOBL, dbo.people_sadr.NAMERAION, dbo.people_sadr.NAMESOV, dbo.people_sadr.NAMECITY, dbo.people_sadr.NAMESTREET, dbo.people_sadr.TYPECITY, dbo.people_sadr.TYPESTREET, dbo.people_work.IDSTATUS, dbo.people_work.SWORK, people.IDLPU AS IDSubject, people.timeModify FROM dbo.people AS people LEFT OUTER JOIN dbo.people_work ON people.IDLPU = dbo.people_work.IDLPU AND people.UNICOD = dbo.people_work.ID AND dbo.people_work.SDATE = '3000-01-01' LEFT OUTER JOIN dbo.people_sadr ON people.IDLPU = dbo.people_sadr.IDLPU AND people.UNICOD = dbo.people_sadr.ID LEFT OUTER JOIN dbo.people_document ON people.IDLPU = dbo.people_document.IDLPU AND people.UNICOD = dbo.people_document.ID LEFT OUTER JOIN (SELECT ID, IDLPU, MAX(sDatePolis) AS max_date FROM dbo.people_polis AS ss GROUP BY ID, IDLPU) AS ms ON ms.ID = people.UNICOD AND ms.IDLPU = people.IDLPU LEFT OUTER JOIN dbo.people_polis AS pp ON pp.ID = ms.ID AND pp.sDatePolis = ms.max_date AND pp.IDLPU = people.IDLPU ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:37:40 |
|
||
|
Очень долго выпоняется запрос
|
|||
|---|---|---|---|
|
#18+
Не ходил, не читал... Это опять не постановка задачи, а твои попытки её решить. И тегом кода пользуйся, да... текстовую лапшу читать очень неудобно. PS. DDL - Data Definition Language. Мог бы и загуглить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:48:12 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38525654&tid=1835401]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 292ms |

| 0 / 0 |
