Которые более производительны, CTE или временные таблицы?

Лучший способ не использовать указатели на все:

int main()
{
    ExampleClass myClass;
    myClass.readSomeData(2.5);
}

Таким образом, нет необходимости в какой-либо проверки, а на самом деле, проверка this внутри функции является спорным .

Если вам нужна обнуляемость, используйте вместо этого std::optional.

129
задан DineshDB 22 March 2018 в 05:37
поделиться

4 ответа

Я сказал бы, что они - различные понятия, но не слишком отличающиеся для высказывания "мела и сыра".

  • Временная таблица хороша для повторного использования или выполнить несколько, обработка передает ряд данных.

  • CTE может использоваться или для рекурсивного вызова или только к улучшенной удобочитаемости.
    И, как представление или встроенная табличная функция может также рассматриваться как макрос, который будет расширен в основном запросе

  • Временная таблица является другой таблицей с некоторыми правилами вокруг объема

Я сохранил procs, где я использую и (и табличные переменные также)

62
ответ дан 24 November 2019 в 00:29
поделиться

Это - действительно открытый законченный вопрос, и все это зависит от как то, что это было используемым и тип временной таблицы (Табличная переменная или традиционная таблица).

Традиционная временная таблица хранит данные во временном DB, который действительно замедляет временные таблицы; однако табличные переменные не делают.

1
ответ дан 24 November 2019 в 00:29
поделиться

Временные таблицы всегда находятся на диске - поэтому, пока Ваш CTE может быть сохранен в памяти, это, скорее всего, было бы быстрее (как табличная переменная, также).

Но с другой стороны, если загрузка данных Вашего CTE (или временная табличная переменная) становится слишком большой, это будет сохранено на диске также, таким образом, не будет никакого большого преимущества.

В целом я предпочитаю CTE по временной таблице, так как за этим следуют, я использовал его. Я не должен думать об отбрасывании его явно или чем-либо.

Так, никакой четкий ответ в конце, но лично, я предпочел бы CTE по временным таблицам.

32
ответ дан 24 November 2019 в 00:29
поделиться

CTE имеет свое применение - когда данные в CTE малы и значительно улучшается удобочитаемость, как в случае с рекурсивными таблицами. Однако его производительность, безусловно, не лучше, чем у табличных переменных, и когда мы имеем дело с очень большими таблицами, временные таблицы значительно превосходят CTE. Это связано с тем, что вы не можете определять индексы в CTE и когда у вас есть большой объем данных, который требует объединения с другой таблицей (CTE просто похож на макрос). Если вы объединяете несколько таблиц с миллионами строк записей в каждой, CTE будет работать значительно хуже, чем временные таблицы.

47
ответ дан 24 November 2019 в 00:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: