Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka produktów a szybkość działania
Forum PHP.pl > Forum > Bazy danych > MySQL
toby
Cześć,

mam następujący schemat bazy (który można zmienić):



Po wpisaniu wybranej frazy aplikacja powinna wyświetlać listę produktów zawierających podaną frazę w jednym z następujących pól:
- Tytuł produktu (products.title)
- Autorzy produktu (authors.last_name i/lub authors.first_name)
- Nazwa wydawcy (publishers.name)

Zapytanie typu:

  1. SELECT p.uid, p.title, p.price, p.description, p.ean, p.date_publish AS date, ps.name AS publisher, a.first_name, a.last_name
  2. FROM products p LEFT JOIN publishers ps ON (p.uid_publisher = ps.uid), authors a, products_authors_mm pam
  3. WHERE p.uid = pam.uid_product AND pam.uid_author = a.uid AND a.first_name LIKE '%andrzej%' OR a.last_name LIKE '%andrzej%'


działa fajnie jak jest 100 produktów, ale już wydajnościowo spada przy 100 tyś. produktów.

Pytanie do Was: jak można ewentualnie usprawnić bazę pod kątem wydajności? Indeksy są oczywiście porobione, chodzi raczej o zmianę struktury...
nospor
1) nie:WHERE p.uid = pam.uid_product AND pam.uid_author = a.uid AND a.first_name LIKE '%andrzej%' OR a.last_name LIKE '%andrzej%'
a: WHERE p.uid = pam.uid_product AND pam.uid_author = a.uid AND (a.first_name LIKE '%andrzej%' OR a.last_name LIKE '%andrzej%')
To tak samo jak z dodawaniem i mnożeniem

2) Co ci zwraca EXPLAIN?
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.