![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 25.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zrobilem skrypt ktory poprawia mi wczesniej dodane wyniki tak jak tego chce ale z racji niskich umiejetnosci w temacie MySQL zrobilem to dosc prymitywnym sposobem tworzac kilkanascie/kilkadziesiat praktycznie takich samych zapytan rozniacych sie tylko 1 szczegolem. Czy przy malej ilosci wynikow i czestotliwosci korzystania z tego skryptu ma to jakies wieksze znaczenia w obciazeniu bazy i powinienem to wpakowac wszystko do 1 zapytania czy poza wzlgedami estetycznymi i powiekszonym o kilkanascie linijek pliku nie ma to znaczenia czy operacje beda wykonywane 1 zapytaniem czy zostanie to podzielone na kilkanascie?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Podstawowe pytanie - czy na pewno potrzebujesz trzymać miejsca w bazie danych? Przecież można bardzo szybko uzyskać aktualne dane z bazy kiedy tylko je potrzebujesz:
Takie zapytanie daje nam całą listę dla danej konkurencji, posortowaną wg wyników. Przy indeksie (id_konkurencji, wynik,id_zawodnika ) będzie to działać natychmiast nawet na całkiem sporej bazie danych. Trzymanie w bazie miejsca ma dość poważną wadę - za każdym razem gdy dojdzie nowy rekord trzeba uaktualnić wszystkie miejsca dla tej konkurencji. Poza tym jeśli już faktycznie musisz je trzymać to lepiej w osobnej tabeli, a na tabeli, do której wpisujesz wyniki utworzyć trigger, który robi update miejsc. A jeśli już bardzo, ale to bardzo musisz mieć tak jak podajesz to lepiej zebrać całość posortowanych wyników dla danej konkurencji jednym zapytaniem do tablicy w php i złożyć w pętli jedno większe zapytanie z update, korzystając z konstrukcji CASE WHEN. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 13:51 |