Stworzyłem projekt zdalnej aplikacji na libpq dla PostrgreSQL . Zachowuje się dobrze, ale profilowałem ogólne działanie aplikacji. Dla każdego końcowego wyniku biznesowego, który produkuję, zdarza się, że nazywam coś w rodzaju klauzuli 40 wyboru (ponad tcpip).
Mam wspomnienia z SQL-Servera przypominające mi o zminimalizowaniu liczby interakcji między moją zdalną aplikacją a bazą danych. Po przeanalizowaniu moich selekcji myślę, że mógłbym zmniejszyć tę liczbę do 3 SELECT
klauzul, używając sprzężeń. Ale nie pamiętam składni użycia wyniku SELECT
w innym SELECT
.
Na przykład:
SELECT * FROM individual
INNER JOIN publisher
ON individual.individual_id = publisher.individual_id
WHERE individual.individual_id = 'here I would like to use the results of a another select'
Ten drugi SELECT
byłby po prostu tego rodzaju:
SELECT identifier FROM another_table WHERE something='something'
Oto uproszczony układ tabel, kilkakrotnie odrzucany dla różnych typów item_ ... (3 zupełnie różne typy, stąd 3 zapytania SQL, jeśli są zoptymalizowane).
table passage
id_passage PK
business_field_passage bytea
table item
id_item PK
id_passage FK
business_field_item text
table item_detail
id_item_detail PK
id_item FK
business_field_item_detail text
image_content bytea
Istnieje kilka id_item
dla jednego id_passage
.
Istnieje kilka id_item_detail
dla jednego id_item
.
Jak byś to napisał?
Jak nazywa się opis przekierowania jednego wyboru do drugiego (jeśli istnieje)?
źródło
Odpowiedzi:
Czy to jest to, do czego dążysz? Upewnij się, że porównywane pola są porównywalne (tzn. Oba pola są numeryczne, tekstowe, logiczne itp.).
Jeśli chcesz wybrać na podstawie wielu wartości:
źródło
SELECT someID FROM table WHERE blahblahblah
ma wiele rekordów? Sprawdzę to teraz.WHERE Individual.IndividualId IN...
wygląda dobrze.Możesz po prostu przepisać to jako inne
JOIN
. Jest to zwykle najprostsze i najszybsze:Uprościłem też nieco i wyeliminowałem darmową pisownię identyfikatorów CamelCase.
źródło
join
zamiast zamiastin ( select...)
W takim przypadku powinienem również przypisać dobrą odpowiedź Erwinowi.