![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 11.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Sprawa dotyczy mojej wyszukiwarki. Tabela slowa ma dwa pola: id, slowo Jak to działa? Ktoś wchodzi na wyszukiwarkę, wpisuje jakąś frazę, a z kolei ona zostaje DOPISANA jako kolejny rekord do tej tabeli. Tak więc szału nie ma - to działa. Dziennie przybywa jakieś 500-700 rekordów, więc nietrudno się domyślić, że terazjest to kilkadziesiąt tysięcy rekordów i jak tak dalej pójdzie, to za "chwilę" będzie to kilkaset tysięcy rekordów, a później milion(y)... OK. Teraz do rzeczy, bo najpierw chciałem naświetlić co i jak hula. Chcę wyświetlić powiedzmy 10 najpopularniejszych rekordów (czyli tych fraz, które wpisują użytkownicy do wyszukiwarki).
Przeczytałem m.in. temat: http://forum.php.pl/lofiversion/index.php/t136996.html i zdurniałem kompletnie... Tam był problem z trzema tabelami, ja mam jedną... Wiem, że czegoś brakuje w tym zapytaniu (count...? group by...?). Jak to ugryźć? Sprawa druga to te "miliony" rekordów. Poradźcie mi proszę, czy w ogóle jest sens mieć jedną tabelę... Czy nie lepiej np. byłoby stworzyć drugą i powiedzmy codziennie o danej godzinie (np. 00:01) zliczać wszystkie rekordy z poprzedniego dnia, pogrupować je (czy się powtarzają-o tym za moment*), dodać wyniki do drugiej tabeli, a z tej pierwszej wszystko usunąć - i tak codziennie... * o tym za moment: może się też zdarzyć, że np. frazy z "wczoraj" (już te pogrupowane i dołączane do tej drugiej tabeli) będą się znowu powtarzać z tymi z "przedwczoraj"... Serio - zgłupiałem... Ktoś...? Coś...? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Skoro chcesz zliczyć, to COUNT, o którym wspomniałeś.
Albo załóż indeks na pole slowo, albo załóż drugą tabelę z polami slowo i licznik (indeks unikalny na slowo). W przypadku wpisywania słowa robisz INSERT ON DUPLICATE (albo wstawiasz, albo zwiększasz licznik). Właściwie, to wydaje mi się, że ta pierwsza tabela w tym przypadku nie jest potrzebna (druga ją zastąpi). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:22 |