За последние 24 часа нас посетили 19790 программистов и 1696 роботов. Сейчас ищут 1808 программистов ...

Выбрать значение из `a`, для которого значение из `b` MAX

Тема в разделе "MySQL", создана пользователем radistao, 30 апр 2009.

  1. radistao

    radistao Активный пользователь

    С нами с:
    22 янв 2009
    Сообщения:
    26
    Симпатии:
    0
    Суть задачи:
    выбрать значение из столбца `аaa` (или вообще выбрать поле), для которого значение из столбца `bbb` максимальное (минимальное). Видел несколько вариантов:
    [sql]SELECT `aaa` FROM `table_name` WHERE `bbb`=(SELECT MAX(`bbb`) FROM `table_name`)[/sql]
    или
    [sql]SELECT `aaa` FROM `table_name` ORDER BY `bbb` DESC LIMIT 1[/sql]

    Какой из них более оптимальный? Быстрый?
    первый мне не нравиться из-за того, что двойной запрос.
    второй - из-за того, что выбирается весь столбец bbb, сортируется, а потом отбрасывается лишнее.
    Есть ли еще какие либо варинты? Более оптимальные.
     
  2. radistao

    radistao Активный пользователь

    С нами с:
    22 янв 2009
    Сообщения:
    26
    Симпатии:
    0
  3. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    radistao
    у тебя любой из этих запросов тормозит? Сколько записей в таблице?
     
  4. radistao

    radistao Активный пользователь

    С нами с:
    22 янв 2009
    Сообщения:
    26
    Симпатии:
    0
    Да нет, я не говорю что тормозит.
    вопрос в том, какой из этих запросов более эффективный. мож это зависит от количества записей, мож еще от чего-то. может есть более эффективный алгоритм запроса такого типа
     
  5. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    radistao
    да ну брось ты, запросы лётные...

    можешь потестить что быстрее и заодно поделиться результатами)))
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    По bbb есть индекс?
     
  7. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
  8. radistao

    radistao Активный пользователь

    С нами с:
    22 янв 2009
    Сообщения:
    26
    Симпатии:
    0
    точно,
    нашел в русском мануале на mysql. Все предельно понятно и ясно.

    Как вывод
    первый работее быстрее, но не поддерживатся в старых версиях
    второй медленне и возвращает только одно значение, даже если их нескольно