Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица с тремя полями, скажем:
a - id объекта
b - id группы свойств этого объекта
c - свойства
Задача получить максимальные значения поля b для каждого объекта. Делается это так:
SELECT a, MAX(b) FROM tbl GROUP BY a
Но все дело в том, что этот запрос избыточен по своей логике. Хотелось бы его подточить под специфику данных. А специфика данных такова, что строк данных с одинаковым значением поля b довольно много. Напоминаю, что это поле группирует разные свойства поля "c". Например, выборка для объекта a=1:
a b c
1 1 1
1 1 2
1 1 3
1 1 4
1 2 5
1 2 6
1 2 7
1 2 8
Я так понимаю, что mysql с запрос "GROUP BY a" просматривает (группирует) все записи, а потом в них ищет максимум. Если же сделать
SELECT a,DISTINCT b FROM tbl
то получится малюсенькая табличка, в которой найти максимальные значения очень быстро. Наконец вопрос: как сделать выборку с DISTINCT, а потом найти максимум?
Неактивен
Добавлю: проводил замеры вышеприведенных двух запросов, разница на порядок и больше. Тут дело в специфике данных.
Неактивен
Неактивен