Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]REGEXP
majestiq
post 24.09.2008, 08:41:34
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $sql = 'SELECT * FROM `tabela` WHERE `tytul` REGEXP ''.$tytul.'' LIMIT 10 ';
  3. $result = mysql_query($sql1231);
  4. ?>


Czy można jakoś zoptymalizować to zapytanie, mam wrażenie, że przy dużej liczbie użytkowników powoduje ono
przeciążenie bazy. Czy rzeczywiście tak może być ?


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
golaod
post 24.09.2008, 09:06:54
Post #2





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie da się zoptymalizować tego zapytania, co najwyżej możesz zoptymalizować samego regexpa który nie wiem jaki jest.
Możesz też zamiast bawić się w regexpy po prostu szukać po jakiś słowach kluczowych lub całym tytule.
=
LIKE
LIKE '%as'
LIKE 'as%'
LIKE '%as%' - to strasznie zamula czasem może trwać nawet 30 sekund.
Go to the top of the page
+Quote Post
majestiq
post 24.09.2008, 09:16:45
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


Czyli co LIKE jest ogólnie lepsze (szybsz) niż REGEXP ?


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
golaod
post 24.09.2008, 09:58:51
Post #4





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Tzn. nie mam wielkiego pojęcia na temat LIKE wiem tylko tyle, że = to ułamki sekund w poszukiwaniu LIKE też nawet LIKE z jednym znakiem % po którejś stronie stringu jednak LIKE z % po obu stronach jest strasznie wolne. Regexp zaś sądzę, że działa jak LIKE %% bo nie dość, że lata po wszystkich stringach które musi dopasować podobnie jak LIKE %% to jeszcze w dodatku musi sprawdzać pod względem poprawności z wyrażeniem regularnym...wystarczy zrobić test. Zrób automatem np. w php który wprowadzi Ci do tabelki(tak z 10 kolumn) losowe dane tekstowe ale to takie totalne. I potem poszukaj za pomocą regexp jakiegoś lotto znaku np. axt potem zrób to samo tylko z LIKE. Sądzę, że powinno być znacznie szybsze ale pewności nie mam bo benchmarków nigdy nie widziałem.
Go to the top of the page
+Quote Post
majestiq
post 24.09.2008, 10:17:52
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


Oki, Dzięki.


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:45