![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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)
|
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 10:21 |