Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] optymalizaja regexp
timon27
post 3.07.2015, 06:40:04
Post #1





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Prawdę mówiąc nie za bardzo się znam na regexp i popełniłem takie coś:

  1. SELECT * WHERE
  2. nazwa = 'zwww5275' OR nazwa REGEXP '^zwww5275[A-Z]$'


Zostawiając jeden z warunków wykonuje się <20ms, ale oba na raz już >100ms sad.gif.

Da się to zrobić w jednym regexp ?


Próbowałem takie coś:
  1. SELECT * WHERE
  2. nazwa REGEXP '^zwww5275$|^zwww5275[A-Z]$'

Ale korzystanie z | jest jeszcze gorsze.

Ten post edytował timon27 3.07.2015, 06:40:39
Go to the top of the page
+Quote Post
Turson
post 3.07.2015, 07:05:40
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Konieczny ten regex? Zamiast LIKE "zwww5275%"
Go to the top of the page
+Quote Post
mmmmmmm
post 3.07.2015, 07:39:40
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


'^zwww5275([A-Z])*$';
http://sqlfiddle.com/#!9/e69d3/1
Go to the top of the page
+Quote Post
timon27
post 3.07.2015, 09:58:48
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


@Turson

Twoje zapytanie nie działa.
Ja chcę typu:
zwww5275
zwww5275A
zwww5275B
...
A twoje łapie również:
zwww52751

Przy dużych liczbach nie widać problemu ale przy małych będzie łapać setki późniejszych nazw (tam jest licznik)

@mmmmmmm

Wyglądają ładnie. Zaraz sobie zaimplementuje i wdrożę. Dzięki.

Ten post edytował timon27 3.07.2015, 09:59:09
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: 29.03.2024 - 11:01