Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
soska66
Witam

Mam takie zapytanie, ktore moze samo w sobie specjalnie dlugie nie jest, ale w polaczeniu z kilkoma tysiacami wpisow zarowno w tabeli product jak i product_option, trwa cholernie dlugo.
Mozecie podpowiedziec jakies inne rozwiazanie?

przykladowe zapytanie

  1. SELECT product.id AS id, product.sku AS sku, album_title, product.description AS description, product.price AS price, product_category.category_code AS code
  2. FROM product, product_category, product_option
  3. WHERE product.sku = product_category.product_sku AND product.sku = product_option.product_sku AND ( product.album_title LIKE '%Aitken%George%' OR product.description LIKE '%Aitken%George%' OR product.sku LIKE '%Aitken%George%' OR product_option.composer LIKE '%Aitken%George%' OR product.composer LIKE '%Aitken%George%')


Nie jestem pewien czy dobrym rozwiazaniem jest przeszukiwanie w jednym zapytaniu dwoch tabel przy uzyciu LIKE. Jest raczej pewne, ze wlasnie ta operacja zajmuje tyle czasu

  1. product_option.composer LIKE xxx OR product.composer LIKE xxx
Riklaunim
Zastosuj wyszukiwarkę Sphinx (na zwykłym hostingu to tego nie postawisz) (lub też dla odważnych Xapiana, Hyperestrayera, Solra itd.). Bazy danych nie są wyszukiwarkami i zapytania LIKE nie są szybkie.
soska66
Jest to zwykly hosting i nic z tym nie da sie zrobic. Chodzilo mi wylacznie o to czy da sie zoptymalizowac moje zapytanie bo senior expertem w mysqlu nie jestem i moglem cos przgapic/pominac, lub o jakims lepszym sposobie po prostu nie wiedziec smile.gif
Riklaunim
Jeżeli to tabela typu MYISAM to możesz spróbować pełnotekstowego wyszukiwania, lecz na dłuższą metę na dużej ilości rekordów pełnotekstowe wyszukiwanie tylko przez Sphinxa lub podobne rozwiązanie.
soska66
nie bardzo rozumiem jak moge FULLTEXT w kontekscie przeszukiwania dwoch roznych tabel za jednym razem. any help ?
Riklaunim
ech winksmiley.jpg Najlepsze rozwiązanie to serwer z dostępem np. przez ssh z możliwością odpalania sphinxa - jeżeli to ma działać i się rozwijać winksmiley.jpg Bo tej powyższej SQL nie da się w magiczny sposób przyśpieszyć tongue.gif
soska66
ok smile.gif wlasnie takiej odpowiedzi oczekiwalem... ze jest to mozliwe albo ze nie smile.gif skoro nie, to nie bede kombinowal z kodem bo i tak nic nie da.
Mam oczywiscie dostep ssh, ale ograniczona mozliwosc instalowania pakietow.. zeby nie powiedziec zadna smile.gif To zwykly shared hosting

cos jest mimo wszystko nie tak... 30 sekund trwa to wyszukiwanie... to nawet na kilka (nie kilkanascie nawet) tysiecy rekordow to dlugo
Riklaunim
Pisz do administratora z pytaniem o możliwość uruchomienia Sphinxa. Płacisz = wymagasz. Używasz Sphinxa = nie zamula im serwera smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.