Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy zapytanie jest optymalne?
Forum PHP.pl > Forum > Bazy danych
kodereq
Czy zapytanie w tej formie jest optymalne ?

  1. SELECT count(table1.id) AS liczebnosc_pierwszej_tabeli, count(table2.id) AS liczebnosc_pierwszej_tabeli
  2. FROM `table1`, `table2`


Widać chyba wyraźnie, że zastępuje ono 2 kolejne zapytania, tylko czy czasami nie kwadraci się?

Tak BTW: lepiej pisać count(*) czy np. count(id) oraz czemu count(table1.*) nie działa ?
erix
Cytat
Widać chyba wyraźnie, że zastępuje ono 2 kolejne zapytania, tylko czy czasami nie kwadraci się?

Jak żyje, jeszcze nie słyszałem o takim czasowniku, Słownik Języka Polskiego też nie słyszał.
kodereq
"Kwadraci" - jego złożoność staje się kwadratowa. Załóżmy, że przeszukujemy tablicę w czasie liniowym, ale przez pomyłkę podczas jednej iteracji wykonujemy dodatkowo podobną ilość operacji jak długość tablicy. To właśnie przykład przykład "kwadracenia się" przeszukiwania tablicy (jest denny, ale inne z nich to temat raczej na pracę magisterską, a nie na forum).
ActivePlayer
a czy z użyciem union nie będzie szybciej?
kodereq
A jak jak byś to skutecznie zrobił za pomocą UNION? Próbowałem, ale dostawałem dziwne wyniki.

  1. SELECT count(*) AS 'liczebnosc_pierwszej_tabeli'
  2. FROM `table1` UNION ALL
  3. SELECT count(*) AS 'liczebnosc_drugiej_tabeli'
  4. FROM `table2`


Napisałem coś takiego, jednak bardzo brzydko prezentuje mi wyniki - w jednej kolumnie, pod sobą. Przydałby się jakiś pewniejszy sposób - w dużym projekcie za takie niedociągnięcie można zapłacić wydłużeniem czasu jego wykonania.
maly_swd
opisz dokladnie co chcesz uzyskac i podaj jakies przykladowe dane z tabel i jakie maja wyjsc wyniki... bo z 1 przykladu to chyba nie bardzo wyjdzie to co chcesz:)

z union mozna dac jeszcze na calosc select sum+ grupowanie i bedziesz mial 1 wynik

  1. SELECT sum(a) FROM ((SELECT count(*) AS a FROM tab1) UNION ALL
  2. (SELECT count(*) AS a FROM tab2)) AS b
  3.  
  4. GROUP BY a


wiem ze to chyba nie jest optymalne:)
kodereq
Potrzebuję tylko ilość rekordów z tych dwóch tabel.
maly_swd
to co Ci podalem zlicza ilosc kolum w 2 tabelach:)
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.