![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 19.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
witam
Załóżmy sytuację, uzytkownik ma do zaznaczenia zmienną, dużą liczbę checkboxów(np 20-30) Uzytkownikow pare tysięcy, formularzy skladanych 500-1000 na godzine. MySQL 5.6, baza na innodb dane zapiszemy w tabeli id_usera | id_checkboxa | zaznaczyl (0/1) mamy index na id_usera Co z punktu widzenia wydajnosci będzie szybsze w momencie zapisania formularza? 1. Wyczyszczenie tabeli z poprzenich odpowiedzi (delete * from where id usera) A następnie w dodanie przeslanych odpowiedzi w jednym duzym insercie (insert into (id,id_checkboxa,zaznaczyl) values (1,2,3)(3,4,5) ) lub 2. sprawdzenie czy sa juz odpowiedzi od tego usera (select count(*) form where id usera) a ) jesli nie bylo odpowiedzi to w petli php for dla przeslanych odpoweidzi insert kazdej odpowiedzi lub b ) jesli są wczesniejsze odpowiedzi to update kazdje z nich w petli for (update ....) Zastanawia mnie wydajność obu podejść biorąc pod uwagę konieczność aktualizowania indexu w każdym z nich. Ten post edytował cyberpooh 12.04.2015, 21:47:43 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Pierwsze będzie na pewno o niebo wydajniejsze z powodu wyeliminowania nadmiarowej ilośći requestów do bazy danych + pozostawienie optymalizacji dużej operacji dla bazy danych.
Jednakże, zamiast pytać na forum, zrób szybki test, w 15 min przygotujesz sobie takie dwa skrypciki dla każdego z przypadków i przetestujesz. Warto zrobić sobie tego typu nawyk, gdyż przy bardziej skomplikowanych przypadkach nie będziesz w stanie nawet oszacować , które podejście jest wydajniejsze (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 22:14 |