Mam projekt bazy danych tutaj, że wygląda to w uproszczonej wersji:PHP/MySQL: Masowe zapytanie SQL lub kilka mniejszych zapytań?
Tabela building
:
- id
- atrybut1
- atrybut2
danych tam jest jak:
- (1, 1, 1)
- (2, 1, 2)
- (3, 5, 4)
i tabele attribute1_values
i attribute2_values
, strukturę:
- id
- wartość
który zawiera informacje takie jak:
- (1 "tekstowy opis wariantu 1")
- (2 "opis tekstowy opcja 2")
- ...
- (6 "tekstowy opis wariantu 6")
Nie jestem pewien, czy jest to najlepsza konfiguracja, czy nie, ale jest ona wykonywana zgodnie z wymaganiami mojego kierownika projektu. Z pewnością ma w tym trochę prawdy, ponieważ możesz teraz łatwo modyfikować tekst bez bałagania.
Jednak teraz doszedłem do strony, gdzie potrzebne do listy atrybutów, więc jak mogę iść o tam? Widzę dwie główne opcje:
1) Zrób jedno duże zapytanie, które zbiera wszystkie wartości z building
i jednocześnie wybiera poprawną reprezentację tekstową z tabeli attribute{x}_values
.
2) Zrób mały kwerendę, która gromadzi wszystkie wartości z tabeli building
. Następnie otrzymasz tekstową reprezentację każdego atrybutu po jednym na raz.
Jaki jest najlepszy wariant do wyboru? Czy opcja 1 jest jeszcze szybsza w opcji 2? Jeśli tak, to czy warto mieć dodatkowe kłopoty z konserwacją?
Jedno zapytanie do bazy danych jest na ogół dużo bardziej wydajny niż wielu zapytań i powinno być mniej kodu, jak również –
@MarkBaker Nie może wynosić do 20 atrybutów though ... Każdy powód, aby mieć inną opinię następnie? – skiwi
Im więcej atrybutów, tym więcej powodów do korzystania z pojedynczego zapytania, a nie z 20 pojedynczych zapytań - koszty czasu na wykonanie zapytania są dużo wyższe niż koszty czasu na przechwycenie zestawu wyników, więc 20 zapytań, z których każdy zwraca 1 wynik, jest prawie nieuchronnie dużo wolniej niż jedno zapytanie, które zwraca 20 wyników –