Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Długie wyszukiwanie danych
Zwariowany
post
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

Ostrzeżenie: (20%)
X----


W bazie mam coś koło 3 mln wierszy. Normalnie na klucz podstawowy, po id znajduje bardzo szybko ok 0.1 sekundy. Ale gdy wyszukuje po imieniu (na wiesz ten jest zalozony normalny index) to trwa to koło 2 sekund. Co zrobić aby działo się to dużoo szybciej?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Ale 2 sekundy przy takiej ilosci rekordów to jest szybko..
Go to the top of the page
+Quote Post
Zwariowany
post
Post #3





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

Ostrzeżenie: (20%)
X----


No nie wiem czy tak szybko. Tylko zastanawia mnie jak np. taka nasza klasa czy fotka obsługują mimo że w bazie mają dobre 15 mln rekordów? Czy może lepszym rozwiązaniem np imienia byłoby trzymać imię w postaci liczbowej? czyli typu zamień a na 1, ą na 2 itd itd?
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Stosują inne systemy baz danych np Oracle. i niekoniecznie wszystko musi się opierać na bazie danych (cache).
Go to the top of the page
+Quote Post
Zwariowany
post
Post #5





Grupa: Zarejestrowani
Postów: 201
Pomógł: 0
Dołączył: 6.01.2009

Ostrzeżenie: (20%)
X----


A nie ma możliwości żeby w mysql szybciej się to odbywało?

Może będzie szybciej jak każdej literce przypiszę numerek i zapiszę do bazy?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
A nie ma możliwości żeby w mysql szybciej się to odbywało?
  1. Poczytaj o replikacji
  2. wymień procesor/dołóż ram do serwera
  3. Cytat
    Może będzie szybciej jak każdej literce przypiszę numerek i zapiszę do bazy?

    Ostatecznie, to tak - indeksy numeryczne są szybciej wyszukiwane
  4. wypróbuj PostgreSQL
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(erix @ 19.07.2009, 23:22:06 ) *
wypróbuj PostgreSQL

Postgres jest wolniejszy od mysql na maszynach < (bodajże 4) rdzeniowych
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Gdzieś niedawno ktoś mi uświadomił na tym forum, że jednak jest inaczej. [;
Go to the top of the page
+Quote Post
flashdev
post
Post #9





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(wookieb @ 19.07.2009, 01:08:40 ) *
Ale 2 sekundy przy takiej ilosci rekordów to jest szybko..


Jak możesz wyciągać takie wnioski, nie wiedząc nawet jak wygląda zapytanie do bazy?

Cytat
// ~2.7 mln rekordów:

SELECT *
FROM `slownik`
WHERE `slowo`
LIKE 'dupa'
LIMIT 0 , 30

Pokaż rekordy 0 - 0 (1 wszystkich, Wykonanie zapytania trwało 0.0761 sekund(y))


SELECT *
FROM `slownik`
WHERE `slowo`
REGEXP 'dupa'
LIMIT 0 , 30

Pokaż rekordy 0 - 29 (163 wszystkich, Wykonanie zapytania trwało 3.4426 sekund(y))


Ten post edytował flashdev 19.07.2009, 22:59:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 04:20