Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie słów kluczowych PRZYSPIESZENIE ZAPYTANIA
grzegorz-gg
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 25.12.2004

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


Witam,

w jaki sposób napisać zapytanie aby wyszukiwało listę artykułów które maja określone słowa kluczowe wpisane przez użytkownika

np. po wpisaniu słów kluczowych 'a', 'b', 'c'
zostały wyświetlone artykuły o nazwie: artykul1 i artykul3

poniżej przedstawiam tabele z bazie danych

artykul (Zawiera artykuły)

  1. +------+------------+
  2. |  ID  |   nazwa    |
  3. +------+------------+
  4. |   1  |  artykul1  |
  5. |   2  |  artykul2  |
  6. |   3  |  artykul3  |
  7. +------+------------+


keywords ( wszystkie możliwe słowa kluczowe )
  1. +------+-----------+
  2. |  ID  |  keyword  |
  3. +------+-----------+
  4. |   1  |     a     |
  5. |   2  |     b     |
  6. |   3  |     c     |
  7. +------+-----------+


tabela_keywords ( przypisanie słów kluczowych do elementów tabeli artykul )
  1. +-------------+---------------+
  2. |  ID_artykul |  ID_keywords  |
  3. +-------------+---------------+
  4. |      1      |       1       |
  5. |      1      |       2       |
  6. |      1      |       3       |
  7. |      2      |       3       |
  8. |      3      |       1       |
  9. |      3      |       2       |
  10. |      3      |       3       |
  11. +-------------+---------------+


Za pomoc z góry dziękuje.
Pozdrawiam

Ten post edytował grzegorz-gg 16.08.2008, 18:52:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
grzegorz-gg
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 25.12.2004

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


Witam ponownie,

wykonałem takie zapytanie według wskazówek teraz mój problem polega na tym w jaki sposób zmodyfikować to zapytanie aby przyspieszyć jego wykonanie na dużej ilości rekordów ok. 1000000 jakich table i typów kolumn użyć?

Za pomoc z góry dziękuję.

  1. SELECT A.artykul_id, A.artykul_title
  2. FROM keywords K, artykul A
  3. JOIN tabela_keywords TK ON A.artykul_id = TK.artykul_id
  4. WHERE K.keywords_name IN ('a', 'b', 'c') AND TK.keywords_id = K.keywords_id
  5. GROUP BY A.artykul_id
  6. HAVING COUNT(A.artykul_id) = 3
  7. ORDER BY A.artykul_id ASC LIMIT 0, 30


Ten post edytował grzegorz-gg 16.08.2008, 19:07:14
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 3.10.2025 - 14:35