|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Есть огромная таблица из 3 полей Нужно сгруппировать повторы больше 4 и вывести Вот так умею: SELECT u1, MAX(u2), MIN(u2), COUNT(*) FROM u GROUP BY u1 HAVING COUNT(*) > 4 Но оно пишет только Мин u2 и Мах u2 - а мне нужно все И лучше чтоб в 4 строки. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 13:40 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
kompospec, Исходную таблицу нужно заджойнить на результат вашего запроса... Или если версия MySQL позволяет - использовать оконные функции ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 14:44 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Щукина Анна kompospec, Исходную таблицу нужно заджойнить на результат вашего запроса... Или если версия MySQL позволяет - использовать оконные функции А кода нельзя привести? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 14:47 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
kompospec, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 14:59 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Щукина Анна kompospec, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 15:11 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Щукина Анна, ого! Спасибо огромное. Как проверю - обязательно отпишусь ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 15:51 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Щукина Анна, Работает!!! Спасибо огромнейшее. Первый раз вижу девушку умнее меня. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 19:52 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Рано я радовался. На локальной, небольшой базе работает, а на сервере - тормознутые-тормоза. Уже 15 мин считает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 20:10 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
kompospec а на сервере - тормознутые-тормоза. Уже 15 мин считает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 21:57 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Akina kompospec а на сервере - тормознутые-тормоза. Уже 15 мин считает. CREATE INDEX u1 ON u(u1); Ошибка SQL запрос: Копировать CREATE INDEX u1 ON u(u1) Ответ MySQL: Документация #1170 - Столбец типа BLOB 'u1' был указан в определении ключа без указания длины ключа ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 03:41 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Akina, Что-то я в этих индексах вообще ничего не понял. Если кто расскажет - то спасиб, большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 03:45 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Так поле u1 ещё и текстовое? ну-ну... DDL полный показывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 07:40 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Akina Так поле u1 ещё и текстовое? ну-ну... DDL полный показывайте. Я не знаю где брать этот ваш ДДЛ. Структура: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 12:25 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
Миллион шестьсот записей u1 - это самый столбец по которому идёт вся работа. Это цифры, в конечном итоге. _ - просто группировка u2 - Дата - тоже можно взять другой формат u3 - примечание. Его можно вообще удалить. Сейчас загрузка по варианту SELECT u1, MAX(u2), MIN(u2), COUNT(*) FROM u GROUP BY u1 HAVING COUNT(*) > 4 - 3 сек По варианту Анны - 45 сек Буду очень рад если поможете с любым ускорением. 1 600 000 записей - это только начало. Спасибо. Огромное. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 12:36 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
u1 определено как tinytext Переопределите его с указанием макс. длины ( tinytext(255) или менее), и используйте ту же длину префикса при создании индекса. Хотя я бы рекомендовал подумать насчёт добавить вычисляемое поле, значение которого равно хэшу поля u1 , именно его индексировать и использовать для группировки. Хэш, само собой, подобрать достаточной длины, чтобы не сильно бояться коллизий. Но всё равно - группировка полутора миллионов записей дело небыстрое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 15:34 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Данные в Базу поступают порциями по 16 тысяч записей с одинаковой датой. Вероятно что не нужно ведь перелопачивать всю таблицу. А можно ведь просто пройтись с новыми данными по старым данным и 1 раз по всей таблице. Упс. Круто. Я сам до этого додумался? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 15:37 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
в mySQL есть что то подобное? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 15:39 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Кстати, если поле имеет данные строго по указанному шаблону, типа 58_62_68_75_80 , его можно обжать в достаточно компактный BLOB... а если ещё и количество групп постоянно равно пяти - то и вовсе в BIGINT. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 15:43 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
kompospec Вероятно что не нужно ведь перелопачивать всю таблицу. А можно ведь просто пройтись с новыми данными по старым данным и 1 раз по всей таблице. Упс. Круто. Я сам до этого додумался? kompospec в mySQL есть что то подобное? А вот всё это Ваше "тихо сам с собою" - вообще непонятно куда прислонить... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 15:44 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Akina u1 определено как tinytext Переопределите его с указанием макс. длины ( tinytext(255) или менее), и используйте ту же длину префикса при создании индекса. Хотя я бы рекомендовал подумать насчёт добавить вычисляемое поле, значение которого равно хэшу поля u1 , именно его индексировать и использовать для группировки. Хэш, само собой, подобрать достаточной длины, чтобы не сильно бояться коллизий. Но всё равно - группировка полутора миллионов записей дело небыстрое. Вы знаете - помогло. Точнее стало всё наоборот: Мой метод стал дольше. Метод Анны выполняется за 5 сек А мой почему стал хуже? Спасибо огромное. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 16:54 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
Что точно стало хуже - запись в базу новых 16 тысяч значений - уже 45 секунд. Ростёт. Было 5 сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 17:00 |
|
Сгруппировать и вывести. Как?
|
|||
---|---|---|---|
#18+
kompospec Спасибо. Огромное. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 17:19 |
|
|
start [/forum/topic.php?fid=47&tid=1828325]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
131ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 496ms |
0 / 0 |