Nano Hash - криптовалюты, майнинг, программирование

Внутреннее соединение и перекрестное применение. Как это оценивается?

Если внутреннее соединение: Для каждой строки в левой таблице найдите строку в правой таблице, в которой выполняется условие.

Что такое перекрестное применение? Я читал, что это просто внутреннее соединение, которое оценивается построчно, но разве внутреннее соединение также не оценивается построчно?

Как вы объясните перекрестное применение на простом английском языке? Это просто внутреннее соединение, но допускает более сложные соединения?



Ответы:


1

APPLY отличается от JOIN тем, что позволяет коррелировать подзапросы. Например:

SELECT ...
FROM outer
APPLY (
  SELECT ..
  FROM inner WHERE outer.column = inner.column
) 

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

SELECT ...
FROM outer
APPLY function(outer.column) 

Это невозможно с JOIN.

CROSS против OUTER такой же, как и с JOIN.

20.07.2015
  • Не могли бы вы объяснить, что вы подразумеваете под «применить принимает корреляции с другой стороны», пожалуйста? 21.07.2015
  • Это означает, что во внутреннем запросе вы можете ссылаться на столбец из текущей строки во внешней таблице. См. сопоставленный подзапрос. 21.07.2015

  • 2
    1. Внутреннее соединение (или просто соединение):

      Учитывая 2 таблицы, A и B, и условие C, которое связывает A и B (чаще всего отношение равенства между 2 полями, одно из A и одно из B), соединение таблицы A с B на основе C означает, что для каждой строки в A проверьте строки в B, где C встречается, и верните их.

      Перевожу на пример:

      SELECT * FROM A внутреннее соединение B на A.field1 = B.field5

      Здесь для каждой строки в A проверьте наличие строк в B, в которых поле1 поля A равно полю5 поля B. Вернуть все такие строки.

    2. Перекрестное соединение:

      Соединение, которое не основано на явном условии, а скорее объединяет каждую строку из A с каждой строкой из B и возвращает такие строки.

      Предполагая, что A имеет 10 строк, а B 20, вы получите результирующий набор из 200 строк.

    3. Перекрестное применение: (о котором я только что узнал благодаря вам :)

      Перекрестное применение действительно связано с перекрестным соединением, поэтому в его названии также есть слово «крест». Что происходит в перекрестном применении, насколько я понимаю, это:

      Имея таблицу A и функцию F, для каждой строки, выбранной данным оператором select из A, выполните перекрестное соединение с результатами F. Допустим, A имеет 10 строк, а F — это просто функция, которая возвращает 3 константные строки, как

      1

      2

      3

      Для каждой из 10 строк из A вы перекрестно соедините 3 результирующих строки из F. В результате получится набор из 30 строк.

      Теперь, с какой целью было создано это заявление, думаю, я мало чем могу помочь. Что я могу придумать после прочтения некоторых потоков SO, так это то, что это обеспечивает прирост производительности в таких операциях перекрестного соединения (вы можете достичь тех же результатов, не используя такую ​​​​функцию, как F и «Cross-Apply»).

      В этом сообщении приводится пример сценария, когда такие достигается прирост производительности.

    20.07.2015
  • Спасибо, что нашли время ответить, но я имею в виду перекрестное применение. 21.07.2015
  • Упс, слишком много поспешности с моей стороны. Надеюсь, что в конце концов я как-то помог, отредактировав ответ и немного сообщив о перекрестном применении. 21.07.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..