![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимизация запроса [MSSQL]
alsov © (2006-01-11 10:33:00)Приветствую, Мастера
Помогите с оптимизацией запроса.
Есть табличка
CREATE TABLE [History] (
[DateTime] [datetime] NOT NULL ,
[Name] [varchar] (255) NOT NULL ,
[Value] [float] NULL ,
[test] [int] NULL)
GO
ALTER TABLE [History] ADD CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED
(
[DateTime],
[Name]
) ON [PRIMARY]
GO
CREATE INDEX [IDX_rev] ON [History]([Name], [DateTime]) ON [PRIMARY]
GO
Нужно написать выборку всех последних значений для каждого Name.
Написал следующий селект, но работает очень долго (т.к. данных там прилично)
SELECT DateTime, Name, Value, Test
FROM History h1
WHERE (DateTime = (SELECT MAX(datetime) FROM History1 h2 WHERE h2.Name = h1.Name))
Johnmen (2006-01-11 11:05:00) [21]Тогда только с подзапросом...
alsov (2006-01-11 11:01:00) [22]мне еще поля Value и Теst в результате надо, а не только Name и datetime
Johnmen (2006-01-11 10:41:00) [23]кстати, для ускорения неплохо бы индекс на Name
Johnmen (2006-01-11 10:40:00) [24]
SELECT Name, MAX(datetime)
FROM History h1
GROUP BY Name