zzeus
5.11.2008, 11:03:32
Witam.
może ktoś z was przeprowadził kiedyś jakieś testy na wydajność, w takim przypadku:
mamy w tabeli np. produkty, i każdy produkt jest opisany przez słowa kluczowe
a. lepiej trzymac te słowa kluczowe w polu text i przeszukiwać za pomocą like
b. zrobić tablice słownikową ze słowami kluczowymi, i dodatkową tablice która będzie łączyć produkt ze słowami kluczowymi
Które rozwiązanie lepsze, gorsze i dlaczego ?
Pozdrawiam
bregovic
5.11.2008, 11:33:05
Testów, co prawda, nie przeprowadzałem, ale mogę tobie powiedzieć że jeśli masz małą ilość produktów to nie ma znaczenia. Jeśli natomiast masz ich trochę więcej, to HABTM które opisujesz sprawdzi się lepiej - jest bardziej elastyczne (możesz szukać w dwie strony) i odpada ci ten paskudny LIKE.
zzeus
5.11.2008, 11:40:43
Ilość produktów będzie duża, liczona w tysiącach. Z tym że jeśli wybiorę opcję b to tabela łącząca będzie ogromna, kilkadziesiąt tysięcy rekordów ...
nospor
5.11.2008, 11:54:44
Cytat
tabela łącząca będzie ogromna, kilkadziesiąt tysięcy rekordów
To nie jest "ogromna". To jest małe pierdniecie dla bazy

Oczywiscie ze opcja b - elastyczna, latwe wyszukiwanie, itp.
bregovic
5.11.2008, 11:56:44
Nawet jeśli tabela łącząca będzie ogromna, będzie wciąż zawierała tylko dwie kolumny - tag_id i product_id. Linkowanie poprzez taką tabelę jest dość proste, i można to załatwić bez szczególnie skomplikowanego SQL. Ale to tak na prawdę zależy od twojego użycia tagów. Jeśli np chcesz szukać produktów poprzez tagi, to IMO dość prosty SELECT będzie szybszy niż LIKE na tysiącach rekordów.
zzeus
5.11.2008, 12:03:26
Cytat(nospor @ 5.11.2008, 11:54:44 )

To nie jest "ogromna". To jest małe pierdniecie dla bazy

Oczywiscie ze opcja b - elastyczna, latwe wyszukiwanie, itp.
No może z tym słowem "ogromna" troszkę przesadziłem
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.