Использование временной таблицы в SQL Server

  1. Прежде всего измените это, сначала сделайте код обновления, а затем выберите

    if (isset(
    1. Прежде всего измените это, сначала сделайте код обновления, а затем выберите

      [110]
    2. Удалить Urlcheck и проверенные функции из JavaScript

    3. В метке добавьте этот код вместо тега 1

      echo ($dbox == 1 ? 'Abled' : 'Disabled');
      
    POST['check1']) &&
    1. Прежде всего измените это, сначала сделайте код обновления, а затем выберите

      [110]
    2. Удалить Urlcheck и проверенные функции из JavaScript

    3. В метке добавьте этот код вместо тега 1

      echo ($dbox == 1 ? 'Abled' : 'Disabled');
      
    POST['check1'] == '1') { Execute("UPDATE box SET value='1' WHERE id = '1'"); }else{ Execute("UPDATE box SET value='0' WHERE id = '1'"); } $dbox = "SELECT value FROM box WHERE id = '1'"; $dbox= $db->ExecuteScalar($dbox); print_r($dbox);//temp
  2. Удалить Urlcheck и проверенные функции из JavaScript

  3. В метке добавьте этот код вместо тега 1

    echo ($dbox == 1 ? 'Abled' : 'Disabled');
    
5
задан Jon Seigel 18 May 2010 в 02:42
поделиться

4 ответа

Временные таблицы являются самыми полезными для сложной пакетной обработки как задание ETL или отчет. Обычно Вы ожидали бы использовать их справедливо редко в транзакционном приложении.

При выполнении сложного запроса с соединением, включающим несколько больших таблиц (возможно, для отчета), оптимизатор запросов не может на самом деле смочь оптимизировать это в одном хите, таким образом, временные таблицы становятся победой здесь - они разлагают запрос на серию более простых, которые дают оптимизатору запросов меньше возможности завинтить план. Иногда Вы переносите операцию, которая не может быть сделана в единственном SQL-операторе вообще, таким образом, несколько шагов для обработки необходимы, чтобы сделать задание вообще. Снова, мы говорим о более сложных манипуляциях здесь.

Можно также составить tempory таблицу для промежуточного результата и затем индексировать таблицу, возможно даже поместив кластерный индекс на него для оптимизации последующего запроса. Это могло бы также быть быстрым и грязным способом оптимизировать запрос отчета в системе, где Нельзя добавить индексы к схеме базы данных. ВЫБЕРИТЕ В, полезно для этого типа операции, поскольку это минимально зарегистрировано (и поэтому быстро) и не требует, чтобы выровнять столбцы выбора и вставить.

Другие причины могли бы включать данные извлечения из полей XML с помощью КРЕСТА, ПРИМЕНЯЮТСЯ и запросы xpath. Обычно намного более эффективно извлечь это во временную таблицу и затем работать над временной таблицей. Они также намного быстрее, чем CTE's для некоторых задач, поскольку они осуществляют результаты запроса вместо того, чтобы переоценить запрос.

Одна вещь отметить состоит в том, что временные таблицы являются точно той же структурой что использование механизма запроса для хранения промежуточных результатов соединения, таким образом, нет никакой потери производительности к использованию их. Временные таблицы также позволяют многофазные задачи с помощью операций присвоения и делают курсоры почти (не совсем, но почти) ненужными в коде T-SQL.

'Запах кода' является преувеличением, но если бы я видел много простых операций, включающих временные таблицы, то я задался бы вопросом, что продолжалось.

14
ответ дан 18 December 2019 в 06:23
поделиться

Это действительно зависит от того, что Вы делаете. Я обычно стараюсь избегать их, но иногда необходимо сделать что-то, усложнил, который делает несколько шагов. Обычно это - путь вне простого выбора из материала таблицы. Как что-либо еще это - инструмент, который необходимо знать, когда использовать.

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

5
ответ дан 18 December 2019 в 06:23
поделиться

Я рассматриваю временные таблицы как своего рода запах кода SQL, чтобы использоваться только как последнее прибежище. Если Вы имеете к данным кэша, прежде чем Вы установили конечный результат, то они обычно указывают на плохой дизайн DB мне.

3
ответ дан 18 December 2019 в 06:23
поделиться

Я также избегаю временных таблиц. Это - мое понимание, что временные таблицы на SQL Server MS всегда находятся в группе файлов основной базы данных. То, что это означает, - то, что, в то время как Ваши таблицы производственного приложения находятся по всей вероятности на некотором дорогом, высокопроизводительном настроенном RAID, Ваши временные таблицы расположены везде, где SQL Server MS был установлен, который находится по всей вероятности на Вашем C: диск в соответствии с каталогом Program Files.

0
ответ дан 18 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

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