Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dylemat z zapytaniami
Forum PHP.pl > Forum > Bazy danych > MySQL
aren
Zalozmy ze mam 10 000 rekordow w tabeli ktora natomiast ma 10 kolumn. Teraz potrzebuje wyciagnac z tabeli zalozmy 4 kolumny rekordow spelniajaych jakis warunek WHERE (zakladamy ze bedzie ich 50). Potrzebuje jednak 1 rekordu z tabeli (ten sam warunek where + cos ekstra) z jego 4 kolumnami pobranymi dla innych rekordow i dodatkowo 1 kolumne.

Takze jakby nie bylo logicznym jest, iz trzeba tu dac dwa zapytania, bo po co wyciagac dane, ktorych i tak nie bedziemy potrzebowac - marnotractwo mocy serwera... czy tez mozna to dac w jednym zapytaniu.

Pondato, jak sprawdzic ile 'poszlo' na to zapytanie: pamieci, czas zapytania.... i co tam jeszcze da sie wyciagnac co pomoze mi porownywac zapytania i dzieki temu pisac lepsze.
DeyV
jeśli różnica jest, tak jak w Twoim przykładzie, tylko na tym, czy pobrać jedna dodatkową kolumnę, czy nie - a wszystkie pozostałe warunki są dokładnie takie same, można zrobić to w 1 zapytaniu.

Warto byłoby się nad tym zastanawiać w sytuacji większej ilości pobieranych danych, szczególnie gdyby dotyczyło to pól tekstowych.

Wszystkie informacje na temat zapytania zwraca EXPLAIN .
aren
Zalozmy wiec zatem:
  1. <?php
  2. $produkt_id = 43;
  3. ?>

Teraz pobieram z bazy z jednej tabeli tylko 50 ostatnich rekordow - interesuja mnie, jak juz wspomnialem wczesniej, zalozmy 4 kolumny. Jednak dla $produkt_id = 43 potrzeba mi zalozmy 6 (gdyz w tych dwoch dodatkowych znajduja sie dane ktore potrzebne mi sa tylko dla takiego warunku), wiec jak to zrobic w jednym zapytaniu wedlug ciebie ? Chyba sie nie da - jedyna mozliwoscia jest pobranie 6 kolumn dla wszystkich rekordow, co w tym wypadku daje za duzo o 2*(ilosc_rekordow-1) kolumny = danych.

Zatem chyba dwa zapytania dla tej samej bazy wydaja sie rozsadniejszym rozwiazaniem ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.