Объединение, вероятно, дешевле.Но как обычно с базами данных, это зависит .
Почему?
Потому что то, что вы делаете прямо сейчас, это:
- Сканирование таблицыB и вставьте в A.
- Сканируйте таблицу C и вставьте в A (там, где ее нет).
- Сканируйте таблицу D и вставьте в A (там, где ее нет).
С объединением вы будете делать это:
- Таблица сканирования B.
- Таблица сканирования C.
- Таблица сканирования D.
- Вставьте уникальные значения в таблицу A.
Т.е. ваши текущие запросы дважды сканируют таблицы B, C, D и таблицу A плюс накладные расходы для трех отдельных запросов.Запрос на объединение сканировал бы таблицы B, C, D и сортировал строки (чтобы получить уникальные значения), а затем вставлял их в таблицу A. На первый взгляд кажется, что объединение будет быстрее, потому что вы выполняете на два меньше сканирования итолько одна вставка (и, следовательно, меньше блокировки).
Что я имею в виду под , зависит :
Индексы: правильно проиндексированы, поиск может бытьбыстрее, чем сортировка данных из B, C и D.
Количество данных: если у вас мало данных по сравнению с оборудованием, на котором вы используете базу данных, то это обсуждение может быть бессмысленным.Т.е. нет смысла оптимизировать детали, которые не являются узкими местами.