Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalność w bazie danych.
Rid
post
Post #1





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


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?(IMG:style_emoticons/default/questionmark.gif)
Czy, ktoś testował jak to wygląda w rzeczywistości?(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(Rid @ 17.07.2011, 13:24:48 ) *
Czy 3 proste zapytania są wydajniejsze od jednego bardziej złożonego zapytania?(IMG:style_emoticons/default/questionmark.gif)

Przetestuj i Nam napisz. Jaki problem? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Rid
post
Post #3





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Fifi209 17.07.2011, 12:37:52
Go to the top of the page
+Quote Post
zend
post
Post #5





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

Ostrzeżenie: (0%)
-----


100? Chyba 100 000 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) Czekamy na testy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Rid
post
Post #6





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Rid 17.07.2011, 18:35:43
Go to the top of the page
+Quote Post
Zyx
post
Post #7





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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ą).

Ten post edytował Zyx 18.07.2011, 06:02:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:21