Какой из следующих SQL-запросов будет быстрее?Объединение двух таблиц или последовательные запросы? - PullRequest
3 голосов
/ 21 января 2011

У меня здесь две таблицы:

ITEMS
ID| DETAILS| .....| OWNER

USERS:
ID| NAME|....

Где ITEMS.OWNER = USERS.ID

Я перечисляю предметы с именами их владельцев. Для этого я мог бы использовать объединение в обеих таблицах или я мог бы выбрать все ПУНКТЫ и просмотреть их, выполнив запрос sql, чтобы получить кортеж этого владельца itmes. Вот как:

1 sql с JOIN против 1x20 одиночных таблиц sql запросов

Что было бы лучше выбрать с точки зрения скорости? Спасибо

Ответы [ 4 ]

6 голосов
/ 21 января 2011

Конечно, JOIN будет быстрее.

Выполнение 20 запросов будет означать:

  • Разбор их 20 раз
  • Создание 20 index стремится найти начало диапазона индекса на items
  • Возвращает 20 наборов записей (каждый со своими метаданными).
3 голосов
/ 21 января 2011

Каждый запрос имеет накладные расходы.Если вы можете сделать что-то одним запросом, то (почти) всегда лучше сделать это одним запросом.И большинство движков баз данных умнее вас.Даже если будет лучше разделить запрос каким-либо образом, база данных сама узнает.

Пример накладных расходов: если вы выполните 100 запросов, между вашим приложением и вашим веб-сервером будет намного больше трафика.

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

Удачи!

2 голосов
/ 21 января 2011

Выполнение объединения будет намного быстрее, так же как и лучшая практика

0 голосов
/ 21 января 2011

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

Вы также можете включить данные производительности в SQL, чтобы увидеть результаты самостоятельно.

http://wraithnath.blogspot.com/2011/01/getting-performance-data-from-sql.html

N

...