Nie, to wcale nie jest prawda. Autor ustawia czytelników na zamieszanie i zachęca do programowania kultowego, które pozwala uniknąć bardzo dużej różnicy strukturalnej między standardową składnią a tym starszym wariantem, który preferuje. W szczególności zaśmiecona klauzula WHERE utrudnia ustalenie, co sprawia, że jego zapytanie jest wyjątkowe.
Jego przykład prowadzi czytelnika do wygenerowania mentalnej mapy jego znaczenia, która ma strasznie dużo bałaganu.
SELECT pet.id, pet.name, pet.age, pet.dead
FROM pet, person_pet, person
WHERE
pet.id = person_pet.pet_id AND
person_pet.person_id = person.id AND
person.first_name = "Zed";
Z grubsza powyższe jest:
Uzyskaj identyfikator zwierzaka, NAZWĘ, WIEK i ŚMIERĆ dla wszystkich zwierząt domowych, person_pet i osób, w przypadku których identyfikator zwierzaka pasuje do identyfikatora pet_id person_pet, a identyfikator person_id tego rekordu pasuje do identyfikatora person_id osoby, której FIRST_NAME ma wartość „Zed”
Przy takiej mapie mentalnej czytelnik (z jakiegoś powodu ręcznie piszący SQL) może bardzo łatwo popełnić błąd, prawdopodobnie pomijając jedną lub więcej tabel. A czytnik tak napisanego kodu będzie musiał pracować ciężej, aby dowiedzieć się dokładnie, co autor SQL próbuje zrobić. („Trudniejsze” jest na poziomie czytania SQL z podświetlaniem składni lub bez, ale wciąż jest to różnica większa niż zero).
Jest powód, dla którego JOIN są powszechne, i to jest stara, klasyczna „canard seperation of koncern”. W szczególności w przypadku zapytania SQL istnieje dobry powód, aby rozdzielić strukturę danych i sposób ich filtrowania.
Jeśli zapytanie jest napisane czystsze, takie jak
SELECT pet.id, pet.name, pet.age
FROM pet
JOIN person_pet ON pet.id = person_pet.pet_id
JOIN person ON person.id = person_pet.person_id
WHERE
person.first_name = "Zed";
Następnie czytelnik ma wyraźniejsze rozróżnienie między składnikami tego, o co jest proszony. Filtr wyróżniający tego zapytania jest oddzielony od tego, w jaki sposób jego komponenty odnoszą się do siebie, a niezbędne komponenty każdej relacji znajdują się bezpośrednio tam, gdzie są wymagane.
Oczywiście żaden nowoczesny system bazy danych nie powinien widzieć znaczącej różnicy między tymi dwoma stylami. Ale jeśli wydajność bazy danych byłaby jedyną kwestią, zapytanie SQL nie zawierałoby białych znaków ani wielkich liter.