Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка разных полей max, min / 19 сообщений из 19, страница 1 из 1
05.10.2016, 07:24
    #39320673
seregakz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Ребят есть задачка! помогите найти оптимизированные решение. Есть табличка!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
id	type	text
1	2	aaa
2	1	bbb
3	2	cccc
4	2	dddd
5	1	fffff
6	2	gggg
7	1	zzzzz



Нужно поля type сгруппировать! но чтобы (единицы) сгруппировались по min(id) с type 1, а двойки по max(id) c type 2

Делал с сортировкой DESC потом ASC, группировал и складывал UNION то мне кажется это кастыль и есть решение по красивее и быстрее! так как если данных много очень долго выполняется!

Необходим результат:

Код: sql
1.
2.
3.
id	type	text
2	1	bbb
6	2	gggg
...
Рейтинг: 0 / 0
05.10.2016, 09:20
    #39320711
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT CASE WHEN type = 1
            THEN min(id)
            ELSE max(id)
       END AS id,
       typ, txt
FROM table
WHERE type IN (1, 2)
GROUP BY type;
...
Рейтинг: 0 / 0
05.10.2016, 11:10
    #39320825
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
C точки зрения быстродействия
Код: sql
1.
2.
3.
SELECT MIN(id) WHERE type=1
UNION ALL
SELECT MAX(id) WHERE type=2


гораздо разумнее.
...
Рейтинг: 0 / 0
05.10.2016, 11:11
    #39320826
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
seregakzтак как если данных много очень долго выполняетсяА кто не создаёт необходимых индексов, тот ССЗБ.
...
Рейтинг: 0 / 0
06.10.2016, 07:40
    #39321527
seregakz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
SharuPoNemnogu, спасибо за подсказку! а всё таки лучше так или юнионами?
...
Рейтинг: 0 / 0
06.10.2016, 07:40
    #39321529
seregakz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Akina, всмысле? выборка есть но результатов в ответе много)
...
Рейтинг: 0 / 0
06.10.2016, 08:49
    #39321569
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Так он же еще хочет получить text из соответствующего min/max.
...
Рейтинг: 0 / 0
06.10.2016, 08:58
    #39321578
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
982183он же еще хочет получить text из соответствующего min/max.Дык id получен, это будет подзапрос. Плюс ещё копия таблицы, и результат в кармане.
...
Рейтинг: 0 / 0
06.10.2016, 13:27
    #39321862
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Да понятно, но это уже три запроса к одной и той же базе.
А он говорит, что долго у него всё

Может быстрее будет сразу два поля вывести
Код: plaintext
SELECT  min(id), max(id) FROM table GROUP BY type;
...
Рейтинг: 0 / 0
06.10.2016, 13:51
    #39321886
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
И далее что-то вроде
Код: sql
1.
2.
3.
SELECT table.*
FROM table, table2
WHERE (table.id= table2.minid and table2.type=1) or (table.id= table2.maxid and table2.type=2)
...
Рейтинг: 0 / 0
06.10.2016, 14:17
    #39321930
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
прогоните все запросы через explain и посмотрите что лучше, поиграйте с индексами, в чем проблема то
...
Рейтинг: 0 / 0
06.10.2016, 14:26
    #39321947
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
И поделитесь результатами плиз.
Крайне любопытно.
...
Рейтинг: 0 / 0
06.10.2016, 16:11
    #39322083
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
982183это уже три запроса к одной и той же базе
Один.

982183Может быстрее будет сразу два поля вывести
Код: sql
1.
SELECT  min(id), max(id) FROM table GROUP BY type;

Можно... это ни на что не повлияет, в т.ч. и на скорость выполнения.
...
Рейтинг: 0 / 0
07.10.2016, 02:24
    #39322363
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Вы хотите сказать, что
Код: sql
1.
2.
3.
SELECT MIN(id) WHERE type=1
UNION ALL
SELECT MAX(id) WHERE type=2


и
Код: sql
1.
SELECT  min(id), max(id) FROM table GROUP BY type 


Будут выполняться примерно одно и то же время?
На достаточно большом объеме данных.
...
Рейтинг: 0 / 0
07.10.2016, 07:14
    #39322388
seregakz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
Кейсом выполнение 8 сек на тестовом ляме данных

селект юнион 14 сек.

если данных 5 миллионов то ппц)
...
Рейтинг: 0 / 0
07.10.2016, 12:51
    #39322692
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
seregakz, а индекс создать не пробовал?
...
Рейтинг: 0 / 0
07.10.2016, 13:31
    #39322753
seregakz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
идекс по type ? а текст по хешу думаю не имеет смысла
...
Рейтинг: 0 / 0
07.10.2016, 13:38
    #39322762
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
seregakzидекс по type ?Нет, по (type, id). Ну надо же в своих предположениях хоть краем глаза на запрос смотреть...
...
Рейтинг: 0 / 0
07.10.2016, 23:13
    #39323103
seregakz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Группировка разных полей max, min
а ну это банально по умолчанию создал, так как юзаю данные в '='
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка разных полей max, min / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]