2009-07-31 7 views
13

Dzięki usłudze internetowej moja aplikacja otrzymuje listę identyfikatorów. Na tej liście muszę wyszukać pole, po jednym na identyfikator. Jeśli pole nie istnieje, wartość powinna być pusta (musi być pokazana).MySQL Najlepszy sposób wybierania przy użyciu listy ID

Zastanawiam się, jakie byłoby najlepsze podejście. Najpierw pomyślałem, że najlepiej jest utworzyć tabelę tymczasową z identyfikatorami, a następnie dołączyć ją do tabeli zawierającej dane, ale jeśli mam rację, to wymaga to co najmniej 1 zapytania na identyfikator, aby wstawić go do tabeli tymczasowej. W takim przypadku wydaje mi się, że równie dobrze mogę powtórzyć listę identyfikatorów w mojej aplikacji i wykonać zapytanie do bazy danych 1 przez 1. Czy to prawda? Jakie podejście możesz doradzić?

pozdrowienia,

Coen

Odpowiedz

20

Użyj SELECT WHERE IN() Składnia aby uzyskać zestaw wyników z danymi trzeba, następnie iteracyjne nad nim w kodzie. W ten sposób kwerendę do DB tylko raz i tylko uzyskać potrzebne informacje.

+0

+1 najlepszy sposób na zrobienie tego – alex

0

Pokazywanie wartości null jest podstępem, musisz połączyć tabelę z nią samą, więc dla każdego rekordu istnieją dwa indeksy. Wykonanie zapytania 1 do 1 dla każdego identyfikatora wymaga tylko jednego wyszukiwania indeksu.

W praktyce nie będzie dwa razy wolniejszy, ponieważ identyfikator będzie znajdował się w pamięci podręcznej kluczy do czasu wykonania drugiego wyszukiwania.

Inną opcją jest wyrenderowanie danych wyjściowych za pomocą identyfikatorów wejściowych i użycie "IN", jak sugerowano wcześniej. Null rekordy nie będą w wynikach zapytania, ale byłoby dobrze, ponieważ wiesz, co zostało zażądane.

+0

Zakłada się, że przedmioty, które otrzymał, są jedynymi przedmiotami w tabeli, jeśli są podzbiorem, to on wróci więcej niż poprosił. – MyItchyChin

Powiązane problemy