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

  • Автор темы Автор темы Эдди
  • Дата начала Дата начала

Эдди

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

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

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

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

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

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

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

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

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

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

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

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

А там если будет тормозить, то начну пробовать варианты.
 
Ни структуры, ни данных для тестов, короче не тема даже это. Говорить надо предметно опираясь на что-то, что можно запустить/померить/отладить.
 
это сильно зависит от explain-а 1-го и 25 запросов.
я подозреваю, что первый запрос будет чуть проще SELECT * from a,b where a.id=b.cat_id
по этому, раз запрос возвращает 50 строк, то париться с 25 запросами не стоит.
(вот если бы запрос возвращал 50000 строк из которых нужно только 50, тогда стоит смотреть в сторону оптимизации)
 
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 запрос решит проблему.
Спасибо всем.
 
Эдди
это выведет одним запросом условие поставленной задачи
ID ---- value
1 ------ 1 - нужная запись
2 ------ 2 - нужная запись
3 ------ 1 - нужная запись
- при условии, что value - цифровое поле и в пределах одной группы ID значения value распределены в порядке очередности создания записей
 
Сверху