выборка с одним уникальным полем

Sepuka

Новичок
выборка с одним уникальным полем

Как можно получить результат при выборке из одной таблицы, где одно из полей должно содержать только уникальные значения? DISTINCT распространяется на весь результат и потому не подходит. GROUP BY выполнятся ОЧЕНЬ долго, индекс на группируемое поле поставил, стало быстрей. Читал http://phpclub.ru/talk/showthread.php?s=&threadid=81257&highlight=%F3%ED%E8%EA%E0%EB%FC%ED%EE%E5+%EF%EE%EB%E5 Но понял что там не разобрались как это сделать.
 

Sepuka

Новичок
Стало медленней...
из мануала который ты дал: SELECT * FROM
( SELECT * FROM prices WHERE from_what_date <="2007-01-01" ORDER BY data desc ) as prices
GROUP BY id_something ORDER BY id_something;

Т.е. выборка происходит из таблицы которая сама формируется, и если в ней получается например 2000 строк, то когда происходит group by индексы на это поле не используются потому что их нет во вновь созданной таблице. А когда результатов штук сто возвращается то они быстро группируются. Я вот нашел такую штуку как GROUP BY `qqq` ORDER BY NULL. При этом я избавился от using filesort. Что конечно здорово. Т.к. при группировке результаты автоматически сортировались по группируемому полю по алфавиту, естественно далее приходилось их сортировать дополнительно, а теперь не приходится.
 

Tigra666

Новичок
Хмм..
Покажи структуры таблицы и что ты хочешь получить...
Потомучто не все то зло,что group by. И хочется получить картину где можно юзать,а где нет.

А самое главное,по какому принципу определяется какая из 100 строчек с id_something нужна,если по максимальному id,то делается чтото типа такого:

select * from my_table
where
id in (select max(id) from my_table group by id_something)
order by whatever_you_want
 
Сверху