![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 0 Dołączył: 26.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam dwie tabele powiedzmy że to są X, Y X- znajdują się w tej tabeli artykuły do oglądania przez użytkowników, po kolei wyświetla użytkownikowi każdy rekord, gdy użytkownik obejży artykuł zapisuje się do bazy Y numer id artykułu i następnie gdy użytkownik przechodzi do następnego artykułu, wtedy skrypt sprawdza w tabeli Y który artykuł już się wyświetlił (aby nie oglądał tego samego po kolei) i pobiera z tabeli X pierwszy artykuł do wyświetlenia którego id nie jest zapisane w tabeli Y i tak wkółko. Problem polega na tym że tabela Y się przepełnia tzn gdy uzyska kilkadziesiąt tysiecy rekordków należy ją czyścić ponieważ skrypt wyświetlania wolno zaczyna wczytywać. Jest możliwość innego rozwiązania, lub można temu jakoś zaradzić aby nie trzeba było tego czyścić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
wszystkie (IMG:style_emoticons/default/smile.gif)
przykładowo zobacz na twoje ostatnie wyniki w pierwszym w kolumnie rows miałeś 6000 z jeden tabeli i 1 z drugiej czyli baza musiała "ręcznie" porównać 6000 w drugim przypadku miałeś 6000 i 3 czyli trzeba było ręcznie porównać 6000*3 rekordów dalej w type masz "all" co oznacza że nie udało się skorzystać z żadnego indeksu i baza musiała analizować wszystkie rekordy w bazie. Skoro nie masz nigdzie zapisanego id ostatniego artykułu to pomiń ten warunek(X.ID>'".$numerid."') w takim przypadku niema sensu dwa razy pobierać prawie tego samego ogólnie polecam poczytać tutaj http://blog.ksiazek.info/2010/04/09/benchmark-i-profiling/ oczywiście nie tylko ten wpis |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 16:17 |