Быстрый способ запросить последнюю запись?

У меня есть таблица вида:

USER |  PLAN |  START_DATE  |   END_DATE
1    |  A    |  20110101    |   NULL
1    |  B    |  20100101    |   20101231
2    |  A    |  20100101    |   20100505

В том смысле, что если END_DATE равно null , это означает, что у этого пользователя в настоящее время есть этот план активно.

Я хочу запросить: (а) текущий план, который у него активен, или (б) последний план, в котором он участвовал. Мне нужна только одна строка, возвращаемая для каждого данного пользователя.

Теперь мне удалось сделать это с помощью объединений и подзапросов, но бывает, что таблица огромна, и они недостаточно эффективны. У кого-нибудь из вас, ребята, есть способ узнать это быстрее?

Спасибо,

[РЕДАКТИРОВАТЬ] Большинство ответов здесь возвращают одно значение. Это было моим плохим. Я имел в виду вернуть одно значение для каждого пользователя, но для всех пользователей сразу. Я адаптировал ответы, которые мог (и исправил вопрос), но просто прояснил их для использования в будущем.

5
задан filippo 23 May 2011 в 11:09
поделиться