У меня есть таблица, которая выглядит, как follows..it имеет несколько столбцов для различных задержекКак разбить одну строки на несколько строк в SQL
Date API Latency1_Avg Latency1_Min Latency1_Max Latency2_Avg Latency2_Min Latency2_Max
---- --- ------------ ------------ ------------ ------------ ------------ ------------
7/26/13 Foo 12 35 45 453 433 435
7/26/13 Bar 33 33 33 234 243 234
Я хочу вывод таблицы, которая делит каждую строку на несколько строк следующим
Date API Latency Aggregation Value
---- ---- ------- ----------- -----
7/26/13 Foo Latency1 Avg 12
7/26/13 Foo Latency1 Min 35
7/26/13 Foo Latency1 Max 45
7/26/13 Foo Latency2 Avg 453
7/26/13 Foo Latency2 Min 433
7/26/13 Foo Latency2 Max 435
.....
Прямо сейчас, что я делаю это
SELECT
Date,
API,
"Latency1" AS Latency,
"Avg" AS Calculation,
Latency1_Avg AS Value
FROM Table UNION ALL
SELECT
Date,
API,
"Latency1" AS Latency,
"Min" AS Calculation,
Latency1_Min AS Value
FROM Table UNION ALL
SELECT
Date,
API,
"Latency1" AS Latency,
"Max" AS Calculation,
Latency1_Max AS Value
FROM Table UNION ALL
.... так далее
Это очень неэффективная производительность мудрый, потому что я делаю сканирование таблицы для каждого из оператора выбора ... когда эта таблица огромна, то это занимает много времени, чтобы запрос ...
Есть ли лучший способ быстрее? Может использоваться пользовательская функция?
таблица не индексируются, и я не админ для этого SQL-сервер, так что я не могу добавить индексы. Любая другая техника для ускорения запроса? так как производительность CROSS APPLY такая же, как UNION ALL, как указано ниже – user330612