|
|
|
Как оптимальнее выбирать MAX(date)
|
|||
|---|---|---|---|
|
#18+
Есть ли большая разница в реализации задачи при таких условиях Необходимо выбрать по товару <сумму> с MAX(<дата>) Есть таблица <код товара>, <дата>, <сумма> Выборка происходит внутри процедуры 1. Вариант SELECT <код товара>, <дата>, <сумма> FROM <таблица> WHERE <код товара> = 12 ORDER BY <дата> DESC И в курсоре выбирать первую запись. Запрос шуршит по индексу COST небольшой, количество записей которые выбираются вряд ли будет превышать когда либо 50. 2. Вариант SELECT <код товара>, MAX(TO_CHAR(<дата>,'yyyy-dd-mm')||' '|| <сумма>) FROM <таблица> WHERE <код товара> = 12 GROUP BY <код товара> COST тоже небольшой, индексы подхвачены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 18:32 |
|
||
|
Как оптимальнее выбирать MAX(date)
|
|||
|---|---|---|---|
|
#18+
Я, обычно, выбирал таким способом: select <Код>,<Дата>,<Сумма>, from <Таблица> A where A.<Дата>=(select MAX(B.<Дата>) from <Таблица> B where A.<Код>=B.<Код>) Результат всегда был отличный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 18:49 |
|
||
|
Как оптимальнее выбирать MAX(date)
|
|||
|---|---|---|---|
|
#18+
Как ты думаешь что быстрее, select f1, MAX(f2) from tbl1 или select f1, f2 from tbl1 A where A.f2=(select MAX(B.f2) from tbl2 B where A.f1=B.f2) И насколько по плану будет различие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 20:24 |
|
||
|
Как оптимальнее выбирать MAX(date)
|
|||
|---|---|---|---|
|
#18+
создать индекс по полю <дата>, в запрос включить хинт - по этому индексу с desc а раз нужна только строка с максимальной датой - добавить в условия - rownum<2 что то вроде SELECT /*+ INDEX_DESC ()*/ <код товара>, <дата>, <сумма> INTO V_<код товара>, :V_<дата>, V_<сумма> FROM <таблица> WHERE <код товара> = 12 AND ROWNUM<2; работает быстро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2003, 21:36 |
|
||
|
Как оптимальнее выбирать MAX(date)
|
|||
|---|---|---|---|
|
#18+
To fly С индексом интересная идея... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 10:23 |
|
||
|
Как оптимальнее выбирать MAX(date)
|
|||
|---|---|---|---|
|
#18+
2 Dick Gonsales Немного неправильная постановка вопроса :) 1. В запросе используется только одна таблица <Таблица>. 2. В приведенном тобой примере не указана группировк (Oracle ругается ;)). 3. При использовании group by если в таблице содержится значительное количество строк - тормоза неминуемы. 4. В случае с выборкой одной записи (where <Код>=NN) - твой вариант предпочтительней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2003, 15:34 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2783&tid=1990743]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 342ms |

| 0 / 0 |
