powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
15 сообщений из 15, страница 1 из 1
Помогите оптимизировать запрос
    #39637890
ramel333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

Есть 2 таблицы

Name
| name_id | Name |

Payment
|payment_id | name_id | date | amount

Я хочу сделать выборку с максимальной датой платежа

select n.name, p.date
from
name n
inner join payment p on p.name_id=n.name_id and p.date in
(select max(date) from payment where name_id=n.name_id)

Можно ли как то более оптимально это записать - для такой простой вещи использовать вложенный запрос как то кажется неоптимальным.
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637893
Just_Serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ramel333,

По опыту скажу EXISTS работает быстрее чем IN
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637899
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ramel333,

Код: sql
1.
2.
3.
4.
5.
6.
7.
select n.name, p.date
from
name n
cross apply 
(select max(date) as Max_Date from payment where name_id=n.name_id
Having max(date) = n.date
) p
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637900
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopelly,

Ошибочка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select n.*
from
name n
cross apply 
(select max(date) as Max_Date from payment where name_id=n.name_id
Having max(date) = n.date
) p
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637902
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopelly,
Опять ошибочка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select *
from
name n
cross apply 
(select max(date) as Max_Date from payment where name_id=n.name_id
Having max(date) = n.date
) p
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637935
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rly?
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  n.[name],
  [max_date] = MAX( p.[date] )
FROM
  [name] n
  INNER JOIN [payment] p on (
        p.[name_id] = n.[name_id] )
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637936
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
GROUP BY
  n.[name]
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637945
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select *
from
name n
outer apply 
(select top 1 * from payment where name_id=n.name_id
Order by date desc
) p
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637946
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kopelly , зачем Вы мучаетесь, пытаясь получить всю запись о платеже, когда автору, по его словам, нужна только последняя дата?
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637954
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637958
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаramel333,
ну баян же... или неустаревающая классика ?
У него задача проще, и решается она простым MAX( ... ) GROUP BY
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637961
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Хочу чтобы у студента в процессе выбора хоть что-то в голове осталось...
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637979
ramel333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню запрос, скорее нужна сумма за последнюю дату

select n.name, p.amount
from
name n
inner join payment p on p.name_id=n.name_id and p.date in
(select max(date) from payment where name_id=n.name_id)
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39637982
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ramel333Уточню запрос, скорее нужна сумма за последнюю дату
Вот и надо было задавать соответствующий вопрос.
Ответ уже дали 21376633 , а там аж целых 7+1 вариантов решения.
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39638165
humble
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хоть так хоть так без индекса сканирование будет.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]