несколько операций столбцов и одного сканирования SQL Server - PullRequest
1 голос
/ 20 августа 2011

У меня есть таблица с 200 столбцами (может быть, больше ...)

a1   a2   a3     a4  a5  ...a200
---------------------------------
1.2  2.3  4.4   5.1  6.7... 11.9   
7.2  2.3  4.3   5.1  4.7... 3.9   
1.9  5.3  3.3   5.1  3.7... 8.9   
5.2  2.7  7.4   9.1  1.7... 2.9  

Я хотел бы вычислить много операций:

  • СУММА (каждый столбец)
  • AVG (каждый столбец)
  • SQRT (SUM (каждый столбец))
  • МОЩНОСТЬ (СУММА (каждый столбец), 2)
  • MIN (все столбцы)
  • MAX (все столбцы)
  • БОЛЬШОЙ (СУММА (один столбец) против СУММ (другой столбец)) что-то вроде поиска, какая сумма является наибольшей для каждого столбца:

    a1 vs a2,  a1 vs a3, a1 vs a4....,a1 vs a200,
    a2 vs a1,  a2 vs a3, a4 vs a5....,a2 vs a200,  
    ...
    a200 vs a1, a200vs a2, a200vs a3.....a200 vs a199
    

Если я сделаю один оператор выбора для каждого столбца и для каждой операции, у меня будет:

SELECT 
 SUM(a1),...,SUM(a200),
 AVG(Sum(a1)),...,AVG(Sum(a200)),
 POWER(Sum(a1),2),...,POWER(Sum(a200),2),
 GREATEST(SUM(a1),SUM(a2)), GREATEST(SUM(a1),SUM(a3)),...,GREATEST(SUM(a1),SUM(a200)),
 GREATEST(SUM(a2),SUM(a1)), GREATEST(SUM(a2),SUM(a3)),...,GREATEST(SUM(a2),SUM(a200))....
 GREATEST(SUM(a200),SUM(a1)), GREATEST(SUM(a200),SUM(a3)),...,GREATEST(SUM(a200),SUM(a199))
 etc... FROM tabMultipleColumns

Проблема здесь, когда я делаю запрос с более чем 1024 возможных результатов ака,> = 1024 столбца

Есть ли способ продолжать выполнять массовые операции с данными делать одно сканирование таблицы , я имею в виду избегать многократного выбора операторов?

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

Можно ли использовать такой инструмент, как BCP, или какое решение, по вашему мнению, более эффективно ...

если вы ищите только SUM, POWER (SUM (), 2) и SQRT (SUM ()), есть столбцы результата 600 ... если я продолжу выполнять эти операции, их будет больше 1024 .. .

1 Ответ

2 голосов
/ 20 августа 2011

Это много расчетов.Я бы, вероятно, просто периодически делал дамп их в другую таблицу, чтобы минимизировать нагрузку на серверЭто зависит от того, как часто будет использоваться запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...