В SQL Server я создаю представление, которое ссылается на несколько таблиц, которые должно иметь одинаковые подсчеты строк и первичные ключи, хотя разные данные столбцов между ними (отсюда и необходимость собрать их все вместе для этого конкретного вида). Я не всегда уверен, что они это делают.Разница между внутренним соединением и левым соединением, если таблицы имеют совпадающие строки строк и первичные ключи
Я знаю, что единственный способ убедиться, что у меня есть количество строк, в которых я нуждаюсь, - использовать левые соединения (или внешние соединения), но я не уверен, есть ли значительная производительность при этом, и если да, то как это сделать.
К сожалению, изменение таблиц - это то, что я не могу сделать, потому что приложение полагается на их структуру, как они есть, поэтому я использую Views, чтобы вытащить данные вместе, и мне нужно, чтобы я делал это наиболее эффективный способ.
Я удалил свой ответ, так как его главный пункт был плохим. Сожалею. –
Поскольку вы говорите, что они должны «иметь одинаковые подсчеты строк и первичные ключи; вы не можете «принудить» это, добавив отношения внешнего ключа из одной таблицы в другую? Таким образом, вы ЗНАЕТЕ (и, следовательно, Оптимизатор запросов тоже!), Что для каждой записи в одной таблице также будет соответствующая запись в другой таблице. Таким образом, вам не нужно добавлять «встроенные механизмы безопасности» в свой код для обработки/грязных данных /. И я предполагаю, что если оптимизатор найдет OUTER-запрос отношения, в котором есть FK, он будет использовать алгоритм, наиболее подходящий из инструментария OUTER & INNER JOIN, как ему заблагорассудится. – deroby
Это, безусловно, будет хорошим способом справиться с этим, но, к сожалению, это потребует перепрограммирования приложения (с которым я не связан) для обработки исключений из ограничения или обеспечения того, чтобы такое возникновение не произошло в первую очередь , –