![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 18.11.2006 Skąd: gorzów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od jakiegoś czasu zacząłem się interesować optymalizacją pracy MySQL i uparłem się, żeby uniknąć "rżnięcia" bazy przez takie polecenie
Co prawda jak mamy tabelę o sile 10 000, to jeszcze jest ok. Ale jak ilość rekordów przekracza 1 000 000, to już robi się problem. Jest jakiś sposób optymalizacji takich instrukcji dla odciążenia MySQL? Pozdrawiam. Ten post edytował servs 23.10.2011, 17:20:29 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
No po pierwsze primo, działasz tu na varchar (title) - jest parokrotnie wolniejsze niż działanie na int(id).
Po drugie primo, robisz select * - czyli wszystkie pola - robiąc select nazwa_pola_1, nazwa_pola_2 uzyskasz nieco na prędkości. Ale najważniejszy jest punkt #1. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 18.11.2006 Skąd: gorzów Ostrzeżenie: (0%) ![]() ![]() |
Tak, ale zakładam, że trzeba poszukać odpowiednią treść np. przy wyszukiwarce.
Apropo SELECT *, napisałem to z lenistwa. Dobra. Załóżmy, że jest SELECT `name` Ale chodzi tu o rezanie bazy przez polecenie while. Czytałem jeszcze coś o takiej możliwości:
Ale, czy IN nie dotyczy TYLKO kolumn INT? Ten post edytował servs 23.10.2011, 17:23:13 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
No inaczej się nie da.
Możesz jeszcze dodać do zapytania limit - by nie było tak, że user wpisze sobie 'e' i znajdzie miliony rekordów. Update: jest jeszcze takie coś jak sql caching - poszukaj w google, ja się tym nigdy nie interesowałem. Update2: Cytat Ale, czy IN nie dotyczy TYLKO kolumn INT? W tym przypadku tak. Normalnie jednak możesz używać jakiegokolwiek typu. Ten post edytował konrados 23.10.2011, 17:26:37 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 18.11.2006 Skąd: gorzów Ostrzeżenie: (0%) ![]() ![]() |
Owszem, jest Qcache, ale przy większych obciążeniach nie zdaje egzaminu.
Do cachowania wyników zdecydowanie lepiej zastosować memcache. Działa zdecydowanie szybciej i nie obciąża tak RAMu. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Do czego ma służyć system?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 0 Dołączył: 18.11.2006 Skąd: gorzów Ostrzeżenie: (0%) ![]() ![]() |
Kolego @crock, nie poruszam tu problemu nad jakąś poważną aplikacją, a chodzi mi o uzupełnienie wiedzy w tym temacie.
Założenie może być takie, że będzie to wyszukiwarka w typie mini google. Realizacja wszystkich procesów na jednym serwerze. Ponadto piszę tu o samym wyświetlaniu wyników, bez indeksowania Internetu. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
No tak, tylko dlaczego dla wyszukiwarki robisz WHERE title = 'era'? Powinno być MATCH ... AGAINST albo LIKE.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 21:12 |