Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalność w bazie danych.
Forum PHP.pl > Forum > Bazy danych
Rid
Witam.Muszę w bazie danych ułożyć zapytanie do bazy danych zliczające powtarzające się elementy z trzech kolumn.Mianowicie mam dylemat,czy do tego celu ułożyć 3 selecty z count,czy jeden select z count i z distinct(widziałem przykłady na google)lub z union.Czy 3 proste zapytania są wydajniejsze od jednego bardziej złożonego zapytania?questionmark.gif
Czy, ktoś testował jak to wygląda w rzeczywistości?questionmark.gif
Fifi209
Cytat(Rid @ 17.07.2011, 13:24:48 ) *
Czy 3 proste zapytania są wydajniejsze od jednego bardziej złożonego zapytania?questionmark.gif

Przetestuj i Nam napisz. Jaki problem? smile.gif
Rid
Ja mam w bazie dwa wiersze hehe jako testowe,musiałbym mieć ze 100 ,żeby cokolwiek przetestować,tak poza tym
pytałem czy ktoś to już zrobił,a nie czy ktoś to zrobi.
Fifi209
Problemem nie jest wygenerowanie danych chyba? Wygeneruj sobie z 10 tyś i po sprawie. Nie wiemy jakie zapytania, jak wygląda baza, więc i odpowiedzi nie ma.
zend
100? Chyba 100 000 tongue.gif Jaki problem z wypełnieniem bazy? Robisz 3 inserty, ((ctrl+ c, ctrl+v) * 10) => ctrl+ c, ctrl+v i już masz 300 rekordów smile.gif Czekamy na testy smile.gif
Rid
Baza MSSQL,bodajże 35kolumn -większość pola typu Nvarchar, o różnej długości,niektóre pola z allow null ,niektóre nie.
Widzi Pan trudno jest wygenerować automatycznie rekordy na 35kolum,które się od siebie różnią.
Musiałbym utworzyć nową tabelę co najmniej z 5 kolumnami typu nVarchar i tam wypełniać i testować,ale to odprowadziłoby mnie od mojego docelowego zadania.
Dałem jedynie pytanie co jest optymalniejsze -3 proste zapytania do bazy ,czy jedno złożone,licząc na odpowiedź osoby zorientowanej w tym temacie,która może przeprowadzała takie testy,ale jak nikt takich testów nie przeprowadzał i nie wie
to po prostu temat do zamknięcia.

PS.Trochę dziwi minie,że nikogo to nie zainteresowało ,albo nie zauważył różnic pomiędzy tymi zapytaniami,mimo że
są Osoby na tym Forum, które pisały 1000-ce kwerend.
Zyx
35 kolumn? Czy to aby nie za dużo? Wydajność nie zależy tylko od struktury zapytania, ale też od tego, ile razy baza będzie musiała sięgać do dysku i co będzie robione w międzyczasie. Aby zrobić COUNT(), trzeba wczytać strony z poszczególnymi wierszami do pamięci. Inne wyniki Ci wyjdą, jeśli liczba kolumn będzie mała, inne, jeśli duża, inne, jeśli baza będzie w międzyczasie wykonywać jeszcze inne zadania (one też mogą potrzebować pamięci, zatem jest mniejsza szansa, że dane interesujące klauzulę COUNT() już w niej będą).
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.