Один запрос или несколько?

Эдди

Новичок
Один запрос или несколько?

Как правильнее выбрать записи?

Результат запроса

ID ---- value
1 ------ 1 - нужная запись
1 ------ 2
1 ------ 3
2 ------ 2 - нужная запись
2 ------ 3
2 ------ 4
3 ------ 1 - нужная запись
3 ------ 2
3 ------ 3

То есть нужна каждая первая запись при появлении нового ID, но в таком запросе выводится слишком много ненужных записей.

1. вариант - делаю такую выборку, как привел. Потом средствами php прокручиваю все строки и выбираю нужные.

2. вариант - сделать три отдельных запроса, выбирая каждый раз только нужную запись без всего лишнего.

Как правильнее?

Извинямс, если непонятно объяснил.
 

dimagolov

Новичок
а откуда выбирать ты собрался? и чем определяется порядок записей?
 

Эдди

Новичок
Там очень сложный запрос с несколькими таблицами.
Меня интересует принцип. Что было бы правильно.
Крутить при помощи php большое количество полученных записей, отбрасывая ненужные, или разбить на запросы поменьше, которых будет больше одного, но зато будут получены только нужные записи.

Порядок записей выбирается по ID
 

dimagolov

Новичок
если кол-во запросов в в.2 строго определено и конечно, а кол-во "лишних" записей не определено и может быть большим, то в.2 предпочтительней.
 

Alexandre

PHPПенсионер
1. вариант - делаю такую выборку, как привел. Потом средствами php прокручиваю все строки и выбираю нужные.

2. вариант - сделать три отдельных запроса, выбирая каждый раз только нужную запись без всего лишнего.

Как правильнее?
все в мире относительно,
исходи из того что быстрее работает на реальных данных.
бывают случаи, когда вариант 1 предпочтительней.
три запроса - не всегда хорошо. Но один супер-сложный запрос, может работать дольше, чем три простых. По этому, тебе должно быть виднее.
 

Эдди

Новичок
Все же пока склоняюсь к варианту 1, потому что ненужных записей для каждого ID будет не более 5-7. На мой взгляд это немного.
А если самих ID будет около 25-50, то 25-50 запросов вместо 1-го не есть хорошо...

А там если будет тормозить, то начну пробовать варианты.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ни структуры, ни данных для тестов, короче не тема даже это. Говорить надо предметно опираясь на что-то, что можно запустить/померить/отладить.
 

Alexandre

PHPПенсионер
это сильно зависит от explain-а 1-го и 25 запросов.
я подозреваю, что первый запрос будет чуть проще SELECT * from a,b where a.id=b.cat_id
по этому, раз запрос возвращает 50 строк, то париться с 25 запросами не стоит.
(вот если бы запрос возвращал 50000 строк из которых нужно только 50, тогда стоит смотреть в сторону оптимизации)
 

prolis

Новичок
Re: Один запрос или несколько?

Автор оригинала: Эдди
То есть нужна каждая первая запись при появлении нового ID
Именно для текщего примера мудрить не нужно[sql]
select id, min(value) as value from table
group by id
[/sql]
 

Эдди

Новичок
Alexandre
Я тоже так думаю. Лишние 5-10-100 записей отсеять при одном запросе быстрее будет. А лишних ни 50000, ни даже 1000 там не будет.

prolis
Это как раз пример варианта №2 для множества запросов, когда в каждом запросе выбирается всего 1 ID и минимальное значение value.
Или нет?

В общем, при первом варианте ответ сервера "запрос занял 0.0074 сек." я думаю 1 запрос решит проблему.
Спасибо всем.
 

prolis

Новичок
Эдди
это выведет одним запросом условие поставленной задачи
ID ---- value
1 ------ 1 - нужная запись
2 ------ 2 - нужная запись
3 ------ 1 - нужная запись
- при условии, что value - цифровое поле и в пределах одной группы ID значения value распределены в порядке очередности создания записей
 
Сверху