Я, смотря на середину клюва/ушей, вижу утку. Смотря на «нос кролика», вижу кролика. Ради интереса даже провёл над собой эксперимент — быстро переводил взгляд между двумя этими точками. Оказалось достаточно полсекунды, чтобы восприятие перестроилось и мозг начинал видеть нужное животное.
Я тоже однажды написал что-то подобное, но это было связано с распределением товарных остатков из двух регистров. Упрощённо, в одном регистре — измерения по складам и партиям, в другом — склад и серийные номера, и нужно было распределить серийные номера по партиям в пределах одного склада. Делалось однократно для переноса остатков между базами, скорее just for fun, чем для реального ускорения. Пришлось делать несколько временных таблиц, которые хитрым образом соединялись сами с собой. Уже, наверно, пару лет такого делать не приходилось.
Первый подобный приём подсмотрел в книжке Габец и Гончарова «Простые примеры разработки». И там был пример: Как одним запросом получить таблицу расхождений курсов взаиморасчетов. Там как раз можно посмотреть логику объединения таблиц, чтобы получить нужное распределение.
Возможно, первый программист использует алгоритм, оптимизированный по памяти, а второй — по скорости. Какой из них лучше — зависит от ситуации и поставленной задачи.
Уже было в СимпсонахУже есть книжка про это:«Стрелы Перуна с разделяющимися боеголовками»
Первый подобный приём подсмотрел в книжке Габец и Гончарова «Простые примеры разработки». И там был пример: Как одним запросом получить таблицу расхождений курсов взаиморасчетов. Там как раз можно посмотреть логику объединения таблиц, чтобы получить нужное распределение.