Сравнение производительности в SQL Server при извлечении строк - PullRequest
0 голосов
/ 31 января 2012

Я хотел бы узнать, что быстрее из следующего сценария:

Три таблицы A, B и C - более эффективно использовать

  1. Select * from A, select * from B и затем Cи, следовательно, получить все свои результаты
  2. Inner join A B and C и получить все результаты в одном массиве?

Спасибо и надеюсь, что все ясно

Ответы [ 4 ]

2 голосов
/ 31 января 2012

Метод 2, в противном случае

  1. Вы получаете 3 набора данных для обработки на клиенте
  2. 3 приема и передачи на сервер базы данных
  3. Больше записей, чем вынужно, потому что в SQL Server не применяется фильтрация через JOIN
  4. Базы данных предназначены для JOIN
  5. Не думайте, что вы можете добиться большего успеха, чем СУБД
  6. ...
0 голосов
/ 31 января 2012

Это зависит.Однажды я прочитал из 3 таблиц, используя соединения, которые дали мне около 1 миллиона строк в наборе результатов для чтения.Сейчас я использую 3 простых выбора, которые дают мне в общей сложности около 44000 строк и объединяют их в памяти с помощью словарей .net (это приложение на C #).Очевидно, это намного быстрее, чем получить миллион строк по сети.

0 голосов
/ 31 января 2012

Объединение должно быть быстрее, так как индексы, если таковые имеются, будут использоваться при любой возможности; однако, никогда не используйте 'select *', а перечисляйте только те столбцы, которые вам нужны. Использование * приведет к снижению производительности только из-за того, что вы будете извлекать больше столбцов, чем необходимо, или если структура таблицы изменится и будет добавлено больше столбцов, например BLOB-объектов.

0 голосов
/ 31 января 2012

теоретически, метод 1 должен быть медленнее, потому что вы будете запускать оператор 3 sql, если сравнивать с методом 2, только один оператор SQL.

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