как объединить запись из другой таблицы только с другим идентификатором от "Union All" - PullRequest
1 голос
/ 11 июня 2009

У меня есть 2 таблицы с повторяющимися записями, включая поле 'Id', и мне нужно объединить их.
Но я думаю, что [union all] гораздо эффективнее, чем [union]
по той причине, что не нужно сортировать.

Ниже приводится мой sql:
ВЫБРАТЬ *
ОТ [dbo]. [RealTime]
UNION ALL
ВЫБРАТЬ *
FROM [dbo]. [Query] a
ГДЕ НЕ СУЩЕСТВУЕТ (
ВЫБРАТЬ ТОП 1 1
ОТ [dbo]. [RealTime] b
ГДЕ a.Id = b.Id
) * * Тысяча двадцать-один Будет ли у вас предложение или более изящное утверждение?

Ответы [ 2 ]

1 голос
/ 11 июня 2009

Вариант 1 (ваш): сначала запросите dbo.RealTime, затем запросите dbo.Query, затем для каждой строки из dbo.Query выполните поиск по dbo.Realtime.

Вариант 2 (UNION): запрос dbo.RealTime, запрос dbo.Query, затем удаление дубликатов.

Помимо того факта, что эти два параметра будут давать разные результаты (первый параметр сохранит дубликаты, полученные из dbo.RealTime и dbo.Query), я бы сказал, что вариант 2, скорее всего, будет меньше ресурсоемкий, поскольку он не должен запрашивать dbo.RealTime дважды - если только (возможно) dbo.RealTime не меньше dbo.Query на порядок.

1 голос
/ 11 июня 2009

Ваш пример sql получает набор записей без записи во второй таблице, идентификатор которой такой же, но, возможно, другие поля отличаются.
Это ваше требование?

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