Внутри SQL-движка соединение таблиц — это не магия, а конкретный алгоритм. Сравним два подхода к соединению таблиц.
Nested Loops работает буквально так, как звучит: берём строку из первой таблицы и ищем совпадения во второй. Если вторая таблица имеет подходящий индекс, поиск по нему будет очень быстрым, и такой алгоритм блестяще справляется с задачей маленькое соединяется с большим.
Hash Join подходит там, где Nested Loops захлёбывается. Он сначала строит хэш-таблицу по одной из входных таблиц, а затем пробегается по второй и ищет совпадения через хэш-функцию. Это даёт огромный выигрыш, когда нужно соединить два больших набора данных, и когда индексов для ускорения поиска нет. Цена такого подхода — расход памяти.
В итоге — если речь идёт о маленьком наборе строк против большого и есть индекс, Nested Loops окажется быстрее. Но если обе таблицы крупные и индексы не спасают, Hash Join чаще всего становится оптимальным выбором.
💬 Как вы бы ответили на такой вопрос на собеседовании?
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Пишите свои ответы в комментариях 👇
Для любознательных ответ такой:
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🚩 Задача с собеса: пират и сундуки
Представьте, что вы пират и у вас есть 12 закрытых сундуков. Все они полны золотых монет, но один — фейковый: в нём только песок. Золото тяжелее, песок легче. У вас есть большие весы без гирь, и всего три взвешивания, чтобы вычислить пустышку.
Как решить эту задачу:
1.Делим сундуки на группы по 6 штук. Взвешиваем. Берём ту группу, где вес меньше.
2.Снова делим на группы, но теперь по 3. Взвешиваем. Берём ту тройку, где легче.
3. Сравниваем внутри этой тройки два сундука. Лёгкий сундук и будет с песком. Если сундуки одинаковые по весу, но с песком тот, что остался.
Задача решается бинарным поиском .
🐸 Библиотека шарписта
#dotnet_challenge
Представьте, что вы пират и у вас есть 12 закрытых сундуков. Все они полны золотых монет, но один — фейковый: в нём только песок. Золото тяжелее, песок легче. У вас есть большие весы без гирь, и всего три взвешивания, чтобы вычислить пустышку.
Как решить эту задачу:
1.
2.
3.
Задача решается
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👏3❤2😁2
Есть код:
var dict = new Dictionary<object, string>();
dict[1] = "int";
dict[1L] = "long";
dict[1.0] = "double";
Console.WriteLine(dict.Count);
Console.WriteLine(dict[1 ]);
Что выведет код? Пишите в комменты 👇
Ответь спрячем здесь:
int
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔4❤2